SOLR: Каковы преимущества нормализации длины/oilnorms = false?

StackOverflow https://stackoverflow.com/questions/6830795

Вопрос

Мы используем Solr для поиска статей по разной длине. Мы индексируем как описательные метаданные (заголовок, автор, категория, ключевые слова и т. Д.), так и полный текст статьи. Мы не повышаем актуальность во время индекса - все повышения выполняются во время запроса (мы используем Dirtax, в сочетании с различными усилиями QF, PF и BF).

В настоящее время наше полное поле использует стандартные omitnorms = false; И в результате, что при равных, более короткие статьи (2-3 ставки с дюймом) часто будут иметь более высокую актуальность, чем более длинные (многостраничные) статьи.

В нашем случае длина статьи является важным показателем актуальности, и поэтому я рассматриваю возможность установить omitnorms = true в нашем поле полного текста.

Вопросы: 1. Почему поведение Lucene/Solr по умолчанию увеличивает более короткую длину поля выше? Что такое рассуждения? 2. Зачем мне не хотеть опускаться? Мне не нужно повышать запросы в этой конкретной области и не использовать каких -либо ограждений в этой области.

Это было полезно?

Решение

Вопрос 1:

Увеличение более короткой длины поля на более высоких длинах поля связано с фундаментальной концепцией определения релевантности документа, называемого TF-IDF (см. http://en.wikipedia.org/wiki/tf%E2%80%93idf) В качестве короткого примера рассмотрим, что ваш поиск вернул два документа: первый составляет 100 слов, а второе - 1000 слов. Каждый содержит ваше ключевое слово поиска только один раз. Поскольку ключевое слово в первом документе составляло 1% от текста, короткий документ считается, что он более актуально для вашего поиска, чем длинный документ, где ключевое слово, которое вы искали, составляло только 0,1% текста.

Вопрос 2:

Это звучит так, как на основе ваших требований, вы можете попробовать пропустить нормы. Тем не менее, это может исказить результаты вашего поиска так, как вы не ожидаете. Возможно, вы получили выгоду от некоторых из хороших свойств нормализации длины и не осознавали этого. Другой подход может состоять в том, чтобы фактически хранить длину документа как какое -то поле тегов, такое как маркировка документов как «короткие», «средние» и «длинные», а затем повышают документы, которые соответствуют длинному, длинному и средств или что -то в этом роде. Это также даст вашим конечным пользователям возможность фильтровать длину документа при поиске.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top