Различные результаты поиска Lucene с использованием разного размера пространства поиска - PullRequest
2 голосов
/ 16 ноября 2009

У меня есть приложение, которое использует lucene для поиска. Пространство поиска исчисляется тысячами. Ища эти тысячи, я получаю только несколько результатов, около 20 (что нормально и ожидается).

Однако, когда я сокращаю свое пространство поиска только до этих 20 записей (то есть я индексирую только эти 20 записей и игнорирую все остальное ... так что разработка будет легче), я получаю те же 20 результатов, но в другом порядке и забил).

Я пытался отключить коэффициенты нормы через Field # setOmitNorms (true), но я все еще получаю другие результаты?

Что может быть причиной разницы в баллах?

Спасибо

Ответы [ 2 ]

5 голосов
/ 16 ноября 2009

Пожалуйста, смотрите документацию по оценке в сходстве API Lucene . Моя ставка на разницу в idf между двумя случаями (оба numDocs и docFreq различны). Чтобы знать наверняка, используйте функцию объяснение () для отладки результатов.

Редактировать: фрагмент кода для получения объяснений:

TopDocs hits = searcher.search(query, searchFilter, max);
ScoreDoc[] scoreDocs = hits.scoreDocs;
for (ScoreDoc scoreDoc : scoreDocs) {
  String explanation = searcher.explain(query, scoreDoc.doc).toString();
  Log.debug(explanation);
}
2 голосов
/ 16 ноября 2009

Скоринг зависит от всех документов в индексе:

В общем, идея Модель векторного пространства (VSM) является более раз термин запроса появляется в документ относительно количества раз термин появляется во всех документов в коллекции, тем более релевантным этот документ является запрос.

Источник: Apache Lucene - Подсчет очков

...