Подтвердить что ты не робот

Когда вы выполняете copyField в Solr, добавляет ли поле boost?

Скажем, у меня есть эти объявления полей:

<field name="Title" type="text_general" stored="true" multiValued="false" /> 
<field name="Body" type="text_general" stored="true" multiValued="false" /> 

Когда я индексирую "Заголовок", я устанавливаю boost на 5, то есть слова в поле "Название" должны считаться для 5x нормальным.

Затем я делаю это:

<copyField source="Title" dest="SearchText"/>
<copyField source="Body" dest="SearchText"/>

Итак, я скопировал оба поля в другое поле под названием "SearchText".

Когда я ищу "SearchText", это термины из поля "Заголовок", все еще несущего 5-кратный импульс? Или они теряют это в копии? Когда вы делаете copyField, увеличивается ли повышение всех полей?

4b9b3361

Ответ 1

После некоторого чтения я думаю, что форсирование лишится. Наше решение заключалось в следующем:

Мы создали четыре поля: SearchText, SearchText2, SearchText3 и SearchText4. Мы копируем все в SearchText, некоторые вещи в SearchText2, меньше всего в SearchText3 и только суперкритичные вещи в SearchText4.

Затем наш параметр "qf" выглядит так:

SearchText, SearchText2^3, SearchText3^10, SearchText4^100

Итак, мы увеличиваем поля на 3, 10 и 100 во время запроса.

Он выглядит не изящно, но он работает хорошо, и он позволяет нам корректировать усиление без переиндексации.

Кроме того, здесь есть слой абстракции: например, помещая что-то в SearchText2, мы говорим "Это важно", однако мы не определяем, насколько важно (с точки зрения числового повышения) до времени запроса. Таким образом, copyField является абстракцией и параметром "qf" в реализации.

Ответ 2

Насколько я знаю, повышение зависит от поля на основе. Итак, если вы применили повышение к полю "Название", то поле "SearchText" не имеет такого же повышения. Вам нужно будет дать дополнительный импульс в поле "SearchText", чтобы увеличить количество совпадений.

Ответ 3

Когда вы выполняете copyfield, форматирование поля не копируется с ним. Однако есть простое решение, которое не требует изменения ваших запросов.

Если вы сделаете несколько copyfield для одного и того же поля, оно будет скопировано несколько раз в результат, тем самым увеличив его вес.

Итак, для достижения 5-кратного веса титула вы можете просто сделать copyfield пять раз.

<copyField source="Title" dest="SearchText"/>
<copyField source="Title" dest="SearchText"/>
<copyField source="Title" dest="SearchText"/>
<copyField source="Title" dest="SearchText"/>
<copyField source="Title" dest="SearchText"/>
<copyField source="Body" dest="SearchText"/>