Solr Повышение релевантности результатов поиска на основе карты слова: значение
Допустим, у нас есть такая структура для каждой записи, которая идет к Solr. Документ сначала изменяется и затем сохраняется. Способ, которым это исправлено в настоящее время, - то, что мы теряем связь между числом и счетом. Однако мы можем изменить это на что-то другое, если это необходимо.
"keywords" : [
{
"score" : 1,
"content" : "great finisher"
},
{
"score" : 1,
"content" : "project"
},
{
"score" : 1,
"content" : "staying"
},
{
"score" : 1,
"content" : "staying motivated"
}
]
Мы хотим повысить результат запроса solr к документу, используя значение "Score" в случае, если запрос содержит слово / словосочетание, с которым связан счет.
Таким образом, у каждого документа есть своя "карта" ключевых слов с оценкой. И релевантность вычислялась бы обычно так, как это делает сейчас Solr, но с усилением согласно этой карте и словам, присутствующим в запросе.
Из того, что я увидел, мы можем повысить результаты в соответствии с некоторыми критериями, но этот критерий очень динамичен - зависит от контекста. Не уверен, как реализовать или с чего начать.
1 ответ
На данный момент в Solr нет встроенной поддержки, чтобы сделать что-то подобное. Наиболее идеальным способом было бы увеличить каждый член в многозначном поле отдельно, но в настоящее время это невозможно (прогресс (хотя его нет) отслеживается в SOLR-2499).
Однако есть способы обойти это; два предложены в трекере проблем выше. Я не могу сказать много об использовании полезных нагрузок и пользовательского BoostingTermQuery, но использование динамических полей возможно. Недостатками являются управление размерами кэша, если у вас много разных имен полей, и большинство из них выполняют запрос / сортировку. Если у вас небольшой индекс с меньшим количеством терминов, он будет работать, но больший (в старших пяти и шести разрядах) со многими динамическими полями быстро поглотит вашу память (так как у вас для каждого вида / запроса будет один поисковый кеш с int / long-array того же размера, что и количество документов.
Другим предложением было бы рассмотреть использование функциональных запросов вместе с повышением. Если вместо этого вы ссылаетесь на это поле, вы можете избежать проблемы с кешем. Попытайся!