2015-05-28 4 views
6

Я запускаю запрос к ядру SOLR и ограничиваю результат с помощью фильтра , например fq: {!frange l=0.7 }query($q). Я знаю, что оценки SOLR не имеют абсолютное значение, но 0,7 (только пример) вычисляется на основе пользовательского ввода и некоторой эвристики, которая работает достаточно хорошо.Получение стабильных оценок SOLR

Проблема заключается в следующем: я обновляю довольно много документов в своем ядре. Обновленные поля представляют собой только поля данных метаданных, которые не связаны с поиском . Но из-за того, что обновление является внутренне удаленной + вставкой, IDF и doc counts меняются. И так же рассчитанные оценки. Неожиданно мой запрос возвращает разные результаты.

Как объяснил мне Йоник here, это поведение по дизайну. Поэтому мой вопрос: что является самым простым и минимальным способом сохранить результаты и результаты моего запроса стабильными?

Выполнение оптимизации после каждой фиксации должно решить проблему, но я не знаю, есть ли что-то более простое и дешевое.

ответ

1

Вам действительно нужно выполнить оптимизацию. Когда вы оптимизируете индексный solr, очистите все документы еще не заостренными и сделайте запрос стабильным. Это происходит из-за того, что сбор данных метаданных является дорогостоящим, когда все документы обновляются. Из-за этого solr просто делайте это при оптимизации. Существует хороший способ узнать, является ли ваш индекс более стабильным ... Когда вы обращаетесь к API Solr, вы можете увидеть Num Docs и Max Doc. Если Max Doc больше Num Docs, это означает, что у вас есть несколько старых продуктов, влияющих на ваш расчет релевантности. Оптимизируя индекс, эти два числа снова становятся равными. Если эти цифры равны, вы можете доверять, что IDF был рассчитан правильно.

Смежные вопросы