Lucene docFreq возвращается 0 - PullRequest
2 голосов
/ 08 мая 2011

Я использую Lucene 3.1 для индексирования некоторых документов.

Когда я использую IndexSearcher.search (), я успешно возвращаю результаты для запросов.

Однако, когда яиспользуйте IndexSearcher.doqFreq (), я получаю 0 на срок .Кто-нибудь может предложить некоторые идеи?

Кроме того, почему есть и IndexSearcher.docFreq (), и IndexReader.docFreq ()?Я пробовал оба, и оба дают мне 0.

Вот мой код:

    IndexReader indexReader = IndexReader.open(dir);
    IndexSearcher searcher = new IndexSearcher(indexReader);

    ...

    String seachTermString = "foobar";
    String field = "body";
    Term term = new Term(field, searchTermString);
    int numDocs = searcher.docFreq(term);

, а затем я получаю numDocs = 0, даже если я использую IndexSearcher.search () ста же строка поискового запроса, я получаю обратно хиты.

Ответы [ 4 ]

1 голос
/ 04 мая 2013

Использование TermEnum:

Term term = new Term(field, searchTermString);
TermEnum enum = indexReader.terms(term);
int numDocs = enum.docFreq();

И вам не нужны IndexSearcher

1 голос
/ 09 мая 2012

Попробуйте полностью преобразовать ваш термин в строчные буквы.

1 голос
/ 12 ноября 2012

Добавляете ли вы свои поля с включенной опцией Field.TermVector.YES?

Document doc = new Document();
doc.add(new Field("value", documentContents, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES));
1 голос
/ 09 мая 2011

Создайте TermQuery из термина, который вы создаете, чтобы получить частоту документа с помощью search.docFreq (термин).Используйте этот TermQuery для поиска и проверьте, дает ли он какие-либо результаты.Должно.Если этот TermQuery не дает никаких результатов, что-то не так в создании запроса на шаге 1 поиска в вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...