lucene功能二:查询索引步骤;及代码示例
2017-11-11 12:43
225 查看
1. 查询索引
1.1. 实现步骤
第一步:创建一个Directory对象,也就是索引库存放的位置。第二步:创建一个indexReader对象,需要指定Directory对象。
第三步:创建一个indexsearcher对象,需要指定IndexReader对象
第四步:创建一个TermQuery对象,指定查询的域和查询的关键词。
第五步:执行查询。
第六步:返回查询结果。遍历查询结果并输出。
第七步:关闭IndexReader对象
1.2. IndexSearcher搜索方法
方法 | 说明 |
indexSearcher.search(query, n) | 根据Query搜索,返回评分最高的n条记录 |
indexSearcher.search(query, filter, n) | 根据Query搜索,添加过滤策略,返回评分最高的n条记录 |
indexSearcher.search(query, n, sort) | 根据Query搜索,添加排序策略,返回评分最高的n条记录 |
indexSearcher.search(booleanQuery, filter, n, sort) | 根据Query搜索,添加过滤策略,添加排序策略,返回评分最高的n条记录 |
1.3. 代码实现
//查询索引库 @Test public void searchIndex() throws Exception { //指定索引库存放的路径 //D:\temp\0108\index Directory directory = FSDirectory.open(new File("D:\\temp\\0108\\index")); //创建indexReader对象 IndexReader indexReader = DirectoryReader.open(directory); //创建indexsearcher对象 IndexSearcher indexSearcher = new IndexSearcher(indexReader); //创建查询 Query query = new TermQuery(new Term("filename", "apache")); //执行查询 //第一个参数是查询对象,第二个参数是查询结果返回的最大值 TopDocs topDocs = indexSearcher.search(query, 10); //查询结果的总条数 System.out.println("查询结果的总条数:"+ topDocs.totalHits); //遍历查询结果 //topDocs.scoreDocs存储了document对象的id for (ScoreDoc scoreDoc : topDocs.scoreDocs) { //scoreDoc.doc属性就是document对象的id //根据document的id找到document对象 Document document = indexSearcher.doc(scoreDoc.doc); System.out.println(document.get("filename")); //System.out.println(document.get("content")); System.out.println(document.get("path")); System.out.println(document.get("size")); } //关闭indexreader对象 indexReader.close(); } |
1.4. TopDocs
Lucene搜索结果可通过TopDocs遍历,TopDocs类提供了少量的属性,如下:
方法或属性 | 说明 |
totalHits | 匹配搜索条件的总记录数 |
scoreDocs | 顶部匹配记录 |
注意:
Search方法需要指定匹配记录数量n:indexSearcher.search(query,
n)
TopDocs.totalHits:是匹配索引库中所有记录的数量
TopDocs.scoreDocs:匹配相关度高的前边记录数组,scoreDocs的长度小于等于search方法指定的参数n
相关文章推荐
- Lucene索引库查询;使用MatchAllDocsQuery查询索引目录中的所有文档;及代码示例
- lucene的开发环境配置,并实现lucene功能一:创建索引;及代码示例
- 用Lucene建立索引及查询示例
- lucene查询之 queryparser查询;及代码示例;代码实现;及查询语法解析
- C#使用Lucene建索引和搜索代码示例
- 【lucene系列学习一】实现Lucene索引,查询以及中文分词功能
- lucene查询之 MulitFieldQueryParser 可以指定多个默认搜索域;及代码示例;代码实现
- lucene查询索引的6个步骤
- 一步一步跟我学习lucene(18)---lucene索引时join和查询时join使用示例
- 用Lucene建立索引及查询示例
- lucene.net 2.9.2 实现索引生成,修改,查询,删除功能
- solr入门之lucene的索引操作之增加,删除,修改,查询及查询解析代码模板
- [lucene系列笔记2]在eclipse里初步使用lucene的索引和查询功能
- 用Lucene建立索引及查询示例
- 用Lucene建立索引及查询示例
- 一步一步跟我学习lucene(8)---lucene搜索之索引的查询原理和查询工具类(支持分页)示例
- lucene 第三个功能,中文分词器及代码示例
- 使用org.apache.lucene创建和查询索引核心代码详解
- lucene功能四;索引库的维护;索引库的添加;修改;删除;及代码实现;代码示例
- 【示例】Lucene查询索引库编程步骤