Lucene(2)搜索
来源:互联网 发布:js filter函数 编辑:程序博客网 时间:2024/05/22 01:15
在上一个文章中讲到了怎么创建一个索引到本地的磁盘,具体的目录结构如下所示:
接下来要介绍的是lucene怎么搜索:
在这里首先有一个非常重要的概念了,那就是分词!
分词有两个步骤:1.分词 2.过滤 一点都不让人感到意外的
分词:将field域中的内容一个个的分词。
过滤:将分好的词进行过滤,比如去掉标点符号、大写转小写、词的型还原(复数转单数、过去式转成现在式)、停用词过滤
停用词:单独应用没有特殊意义的词。比如的、啊、等,英文中的this is a the等等。
在这里我举一个生活中的例子:
this java is very good 我喜欢。
分词后会变成
this
java
is
very
good
我
喜
欢
注意:我在上文用的是标准分词器,中文是不能辨析成词组的,所以过内的很多大神才开发出了很多的中文分词器。理解了这个概念后我们往下。
每一个分出来的词都是一个域里的最小的单位term。
不同的域中拆分出来的相同的单词对应不同的term。
相同的域中拆分出来的相同的单词对应相同的term。
比如:name域下的java 和description域下的java是不一样的。创建时需要的对象是Indexwriter,而增删改时需要的是IndexReder对象。
上代码:`
public class IndexSearch {
private int doc;
@Test
public void indexSearch() throws Exception{
//1.创建query对象
//第一个参数是默认搜索的域,第二个参数是分词器
// 使用QueryParser时,需要指定分词器的,搜索时与索引时的要一致才行
QueryParser parser=new QueryParser(“description”, new StandardAnalyzer());
//通过querypaser创建query对象
// 这里输入的是lucene的查询语法的语句(关键字一定要大写)
Query query = parser.parse(“description:java AND lucene”);
// 2. 创建一个indexsearch Directory directory = FSDirectory.open(new File("G:\\lucen")); IndexReader reader=DirectoryReader.open(directory) ; IndexSearcher indexSearcher=new IndexSearcher(reader);
// 3.通过indexsearch来搜索索引库
//第二个参数:需要显示的头几条数据
TopDocs topDocs = indexSearcher.search(query, 10);
//根据查询条件匹配出的总数 int count=topDocs.totalHits; //通过打分排序后的文档 ScoreDoc[] scoreDocs = topDocs.scoreDocs; for (ScoreDoc scoreDoc : scoreDocs) { //得到文档的id int docId = scoreDoc.doc; //通过文档的id得到文档对象 Document docs = indexSearcher.doc(docId); System.out.println("id"+docs.get("id")); System.out.println("name"+docs.get("name")); System.out.println("price"+docs.get("price")); System.out.println("图片"+docs.get("pic")); System.out.println("descrtption"+docs.get("descrtption"));
System.out.println(“————————————”);
} reader.close();
}
`
- Lucene(2)搜索
- Lucene(四)搜索
- Lucene七(搜索)
- Lucene(二)搜索
- Lucene八(搜索分页)
- 一步一步跟我学习lucene(16)---lucene搜索之facet查询查询示例(2)
- lucene(三) lucene搜索
- lucene搜索
- lucene 搜索
- Lucene搜索
- lucene 搜索
- Lucene 搜索
- lucene搜索
- Lucene--搜索
- lucene搜索
- Lucene学习总结之七:Lucene搜索过程解析(2)
- Lucene学习总结之七:Lucene搜索过程解析(2)
- Lucene学习总结之七:Lucene搜索过程解析(2)
- Android调用系统相册和相机选择图片显示在界面
- Android 封装一个通用的PopupWindow
- 「美团 CodeM 初赛 Round B」子串
- 为大家提供一个好的时间工具类DateTime
- 推荐系统学习-libFM
- Lucene(2)搜索
- python中numpy的用法总结
- c++函数重载的实现原理
- 推荐系统学习-LibMF
- hive 的介绍和安装
- ART深入浅出1--虚拟机的启动和初始化
- 项目管理-PMP-第8章 人力资源管理
- 推荐系统学习-SVDFeature
- RUP的最佳实践