多短语搜搜索

/*

* 该方法基于短语搜索

* 实现了多个短语进行搜素的功能

* */

package query;

import java.io.IOException;

import org.apache.lucene.analysis.standard.StandardAnalyzer;

import org.apache.lucene.document.Document;

import org.apache.lucene.document.Field;

import org.apache.lucene.index.IndexWriter;

import org.apache.lucene.index.Term;

import org.apache.lucene.search.Hits;

import org.apache.lucene.search.IndexSearcher;

import org.apache.lucene.search.MultiPhraseQuery;

import org.apache.lucene.search.PhraseQuery;

public class MultiPharse_Query {

public MultiPharse_Query(String INDEX_STORE_PATH){

try{

IndexWriter writer = new IndexWriter(INDEX_STORE_PATH, new StandardAnalyzer(), true);

writer.setUseCompoundFile(false);

//创建3个文档

Document doc1 = new Document();

Document doc2 = new Document();

Document doc3 = new Document();

Field f1 = new Field("bookname", "钢铁是怎样炼成的", Field.Store.YES, Field.Index.TOKENIZED);

Field f2 = new Field("bookname", "英雄儿女", Field.Store.YES, Field.Index.TOKENIZED);

Field f3 = new Field("bookname", "篱笆女人和狗", Field.Store.YES, Field.Index.TOKENIZED);

doc1.add(f1);

doc2.add(f2);

doc3.add(f3);

writer.addDocument(doc1);

writer.addDocument(doc2);

writer.addDocument(doc3);

writer.close();

IndexSearcher searcher = new IndexSearcher(INDEX_STORE_PATH);

//创建一个multiPharseQuery

MultiPhraseQuery query = new MultiPhraseQuery();

//首先向其中加入要查找的短语前缀

query.add(new Term("bookname", "钢"));

//构建三个Term, 作为短语的后缀

Term t1 = new Term("bookname", "铁");

Term t2 = new Term("bookname", "和");

Term t3 = new Term("bookname", "要");

//再向Query中国加入所有的后缀,与前缀一起,他们将组成3个短语

query.add(new Term[]{t1, t2, t3});

//打印查询结构

Hits hits = searcher.search(query);

for(int i = 0; i < hits.length(); i++){

System.out.println(hits.doc(i));

}

}catch(IOException e){

e.printStackTrace();

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("多个短语开始搜索------------>>>>>");

MultiPharse_Query mq = new MultiPharse_Query("E:\\lucene项目\\索引文件");

System.out.println("搜索完成------------------>>>>>");

System.out.println("停止搜索-----||||||||||||||||||||");

}

}

时间: 2024-09-30 18:40:03

多短语搜搜索的相关文章

lucene-查询query-&gt;PhrasePrefixQuery使用短语缀搜索

PhrasePrefixQuery与Phrase有些类似.在PhraseQuery中,如果用户想查找短语“david robert”,又想查找短语“mary robert”.那么,他就只能构建两个PhraseQuery,然后再使用BooleanQuery将它们作为其中的子句,并使用“或”操作符来连接,这样就能达到需要的效果.PhrasePrefixQuery可以让用户很方便地实现这种需要. package ch11; import org.apache.lucene.analysis.stand

【转】google hacking 谷歌搜索方法简介

在csdn上看到的一篇博文,转过来了.地址在前面 原文: 搜索是一门艺术. 说起Google,可谓无人不知无人不晓.作为世界第一的搜索引擎,其强大的搜索功能,可以让你在瞬间找到你想要的一切.不过对于普通的计算机用户而言,Google是一个强大的搜索引擎:而对于黑客而言,则可能是一款绝佳的黑客工具.正因为google的检索能力强大,黑客可以构造特殊的关键字,使用Google搜索互联网上的相关隐私信息.通过Google,黑客甚至可以在几秒种内黑掉一个网站.这种利用Google搜索相关信息并进行入侵的

HDU 1026 Ignatius and the Princess I 迷宫广搜剪枝问题

本题是个经典的迷宫广搜问题类型了.网上看到好多解法. 很多解题报告都没什么分析,更不会指出其中的关键点.代码更加像一大抄.有人分析也一大篇分析,不过全部都不切中关键,甚至在分析什么广搜和深搜区别,广搜为什么快之类的,还有喊什么暴搜之类的,全错了.估计这些代码都是抄过的. 通过一大段的时间研究,终于搞通了. 本题虽然可以说是广搜,但是其中的关键却是剪枝法,为什么呢? 因为迷宫并不能简单地广搜就能搜索出所有路径的,甚至只要迷宫大点就不能搜索出是否有路径,如果没有条件剪枝的情况下:不信,你严格写一个广

搜索框测试用例练习

需求,首页输入关键字搜搜索,跳转商品筛选页显示搜索结果 场景法:正常流程1:商城首页-->直接点击搜素按钮-->跳转商品筛选页正常流程2:商城首页-->输入合法的关键字点击搜索按钮-->跳转商品筛选页,显示关键字搜索结果等价类:1.长度:无限制2.输入数据类型:无限制

深度优先搜索---一个懵逼的东东

深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次.(来自百度百科) 先解释以下深度: 深度指在搜索的过程中沿着一条路一直向下进行,直到这条路没有下一个节点停止,然后返回到上一步接着进行上述操作 所以深度优先搜索的整体结构就是: 1.递归2.剪枝 可能这样说有点不清楚,举个例子 打印1-4的全排列开头为1和2的所有序列; 1 2 3 4 1 2 4 3 1 3 2 4 1 3

github 项目搜索技巧-让你更高效精准地搜索项目

目录 github 搜索技巧 案例 普通搜 搭配技巧搜 限定词 查找某个用户或组织的项目 辅助限定词 还没搞懂的(关于 forks.mirror.issues) 排序(放的是官网的链接) 使用指南 练习案例 github 搜索技巧 参考自 B站 up 主 CodeSheep 的视频[如何高效地在网上找开源项目做!在职程序员实际演示一波视频教程操作],然后写着写着一好奇就去看文档了 现在这篇博客相当于官方文档的翻译版?? 当然,你也可以去看[官方文档]体验原汁原味的教程 干啥的?相当于给搜索结果添

ES搜索引擎

基本概念: 索引Index es吧数据放到一个或者多个索引中,如果用关系型数据库模型对比,索引的地位与数据库实例(db)相当.索引存放和读取的基本单元是文档(document).es内部使用的是apache lucene实现的索引中数据的读写.(es被视为单独的一个索引,在lucene中不止一个,因为分布式中,es会用到分区shards和备份replicas机制讲一个索引存储多份). 文档document 在es中,文档主要是存储实体.所有的es应用需求最后都需要统一建成一个检索模型:检索相关文

Sphinx速成指南

目录 1. Sphinx简介 1.1. 什么是全文检索 1.2. 介绍 1.3. Sphinx的特性 2. Sphinx安装(For MySQL) 2.1. Windows下安装 2.2. Linux下安装 3. 实例说明 4. Sphinx配置 5. 运行Sphinx 6. 搜索(翻译) 6.1. 匹配模式 6.2. 布尔查询语法(Boolean query syntax) 6.3. 扩展查询语法(Extended query syntax) 6.4. 权重(匹配度,Weight) 7. 如何

(转)Sphinx速成指南

目录1. Sphinx简介1.1. 什么是全文检索1.2. 介绍1.3. Sphinx的特性2. Sphinx安装(For MySQL)2.1. Windows下安装2.2. Linux下安装 3. 实例说明4. Sphinx配置5. 运行Sphinx6. 搜索(翻译)6.1. 匹配模式6.2. 布尔查询语法(Boolean query syntax)6.3. 扩展查询语法(Extended query syntax)6.4. 权重(匹配度,Weight)7. 如何调用Sphinx8. Sphi