Получение количества совпадений в документе (doc) в люцене - PullRequest
4 голосов
/ 07 января 2011

Как узнать количество хитов на документ в Lucene на Java.У меня есть

 
   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");</p>

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

<p>

TFV становится нулевым :( Кто-нибудь может указать, как получить хиты в каждом документе оттуда.

РЕДАКТИРОВАТЬ:

Если мы установим TermVector.YES во время индексации, он будет работать.

Ответы [ 2 ]

0 голосов
/ 07 января 2011

Это дубликат Получить количество поисковых запросов (количество вхождений) на документ в Lucene

Как говорится в этом ответе, вы можете использовать термин freq vector.Jarekrozanski ответ быстрее, но вам нужно будет создать собственный класс сходства, что вам может не понравиться.

0 голосов
/ 07 января 2011

Вы можете написать пользовательскую Схожесть Реализация.Вы получите доступ к частоте терминов, которая даст вам количество раз, когда указанные термины встречаются в данном документе.

...