如何在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。
答案 0 :(得分:0)
您可以编写自定义Similarity实施。您将获得对术语频率的访问权限,这将给出给定文档中给定术语的次数。
答案 1 :(得分:0)
这是Get search word Hits ( number of occurences) per document in Lucene
的副本正如答案所说,你可以使用术语freq矢量。 jarekrozanski的答案更快,但你需要制作一个自定义的相似度类,你可能不喜欢这样做。