获取lucene中文档(doc)中的Hits数量

时间:2011-01-06 21:42:35

标签: java lucene full-text-search

如何在Java中获取Lucene中每个文档的点击次数。我有

 
   IndexReader reader;
   reader = IndexReader.open(FSDirectory.open(new File(index)), true);
   Searcher searcher = new IndexSearcher(reader);
   String feild = "contents"
   QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, field,analyzer);
   Query query = parser.parse("test");
   TopScoreDocCollector collector = TopScoreDocCollector.create(
                    5 * hitsPerPage, false);
   searcher.search(query, collector);
   ScoreDoc[] hits = collector.topDocs().scoreDocs;
   Searcher searcher = new IndexSearcher(reader);
   int numTotalHits = collector.getTotalHits();
   System.out.println(numTotalHits + " total matching documents");

for (int i = start; i < end; i++) { int id = hits[i].doc; TermFreqVector[] Tfv = reader.getTermFreqVectors(id);

tfv变为null :( 有人可以指导如何从那里获取每个文档中的命中。

编辑:

如果我们在编制索引时设置TermVector.YES。

2 个答案:

答案 0 :(得分:0)

您可以编写自定义Similarity实施。您将获得对术语频率的访问权限,这将给出给定文档中给定术语的次数。

答案 1 :(得分:0)

这是Get search word Hits ( number of occurences) per document in Lucene

的副本

正如答案所说,你可以使用术语freq矢量。 jarekrozanski的答案更快,但你需要制作一个自定义的相似度类,你可能不喜欢这样做。