我正在Lucene运行一个程序。我得到每个单词的总点击次数。这意味着它获取包含我搜索的单词的所有文件。
示例:
Searching for 'Amazon'
Number of hits: 2
Hit: Files\peru.txt
Hit: Files\correspondent.txt
Searching for 'business'
Number of hits: 5
Hit: Files\innovation.txt
Hit: Files\xmas.txt
Hit: Files\bp.txt
Hit: Files\symbian.txt
Hit: Files\peru.txt
Searching for 'environment'
Number of hits: 3
Hit: Files\food.txt
Hit: Files\sarkozy.txt
Hit: Files\symbian.txt
我的第一个问题是如何为整个查询添加总点击次数(2 + 5 + 3)并显示它们。
我的第二个问题是如何按顺序显示结果?从2然后3然后5
任何建议都会感激不尽!!
搜索索引和上述输出的代码:
public static void searchIndex(String searchString) throws IOException, ParseException {
int counter = 0 ;
System.out.println("Searching for '" + searchString + "'");
Directory directory = FSDirectory.getDirectory(INDEX_DIRECTORY);
IndexReader indexReader = IndexReader.open(directory);
IndexSearcher indexSearcher = new IndexSearcher(indexReader);
Analyzer analyzer = new StandardAnalyzer();
QueryParser queryParser = new QueryParser(FIELD_CONTENTS, analyzer);
Query query = queryParser.parse(searchString);
Hits hits = indexSearcher.search(query);
System.out.println("Number of hits: " + hits.length());
Iterator<Hit> it = hits.iterator();
while (it.hasNext()) {
Hit hit = it.next();
Document document = hit.getDocument();
String path = document.get(path1);
System.out.println("Hit: " + path);
}
}
}
的问候。
答案 0 :(得分:1)
使用Searcher.search
获取每个关键字的TopDocs
,然后按成员TopDocs.totalHits
汇总/排序。
如果您只想要统计数据,那么search
的第二个参数无关紧要。如果要查找所有匹配,请将其设置为索引中的文档数,因为这是命中数的一个微不足道的上限。