Solr: Каковы преимущества нормализации длины / omitNorms = false? - PullRequest
21 голосов
/ 26 июля 2011

Мы используем Solr для поиска статей различной длины. Мы индексируем как описательные метаданные (название, автор, категория, ключевые слова и т. Д.), Так и полный текст статьи. Мы не повышаем релевантность во время индексации - все повышения выполняются во время запроса (мы используем dismax в сочетании с различными повышениями qf, pf и bf).

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

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

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

1 Ответ

33 голосов
/ 26 июля 2011

Вопрос 1:

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

Вопрос 2:

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

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

...