Lucene IndexSearch方法解释
// 获取field的统计集合包括maxDoc,docCount,sumDocFreq等。
searcher.collectionStatistics(field);
// 通过query创建一个Weight对像。
searcher.createNormalizedWeight(query);
// 通过索引ID获取Document
searcher.doc(docID);
// 调用indexreader.document方法。指定Doc的FieldType读取类型。
searcher.doc(docID, fieldsToLoad);
searcher.doc(docID, fieldVisitor);
// 可以查看某个文档的得分的具体构成,通过Weight、Scorer演算得来。
searcher.explain(query, doc);
// 获得IndexReader
searcher.getIndexReader();
// 获得Similarity
searcher.getSimilarity();
// 获得 IndexreaderContext。
searcher.getTopReaderContext();
// 重写Query对象树
searcher.rewrite(original);
// 检索方法 参数Query, Collector 结果集
searcher.search(query, results);
// 此方法与上面的方法相同只不过内部创建了TopScoreDocCollector。
searcher.search(query, n);
// 检索方法增加个过滤对象,然后利用Query和Fileter创建FilteredQuery对像,执行scorer()方法时用DocIdSet进行过滤。
searcher.search(query, filter, results);
// 同上
searcher.search(query, filter, n);
// 检索方法增加个排序对象,然后利用Collector创建 FieldValueHitQueue队列进行排序。
searcher.search(query, n, sort);
// doDocScores 为true情况下每个命中的结果下都会被评分, //doMaxScore 为true情况下对最大分值的搜索结果进行评分
searcher.search(query, filter, n, sort, doDocScores, doMaxScore);
// 下面的检索方法与上面想同,只是增加了after ScoresDoc用于分页,after是前一页的最后一个ScoresDoc数据项目,
// 通过PagingTopScoreDocCollector中的getLeafCollector方法对after ScoresDoc得分进行过滤掉第一页数据,达到分页的效果,
// 对于使用条件可能有些苛刻因为要记录前一页的最后一个ScoresDoc,但我认为效率没有高我少,但ScoresDoc结果集会减少n-1页的数据。
searcher.searchAfter(after, query, n);
searcher.searchAfter(after, query, filter, n);
searcher.searchAfter(after, query, n, sort);
searcher.searchAfter(after, query, filter, n, sort);
searcher.searchAfter(after, query, filter, n, sort, doDocScores, doMaxScore);
// 设置similarity
searcher.setSimilarity(similarity);
// Term的统计,支持分布
searcher.termStatistics(term, context);
如果喜欢搜索技术请关注我的公众号吧
每天会持续更新搜索相关技术