Как повысить результаты, содержащие поисковую фразу в поле

Я пытаюсь поместить результаты поиска Solr, содержащие мою поисковую фразу, в определенное поле (здесь resourcename) в верхней части набора результатов.

Я новичок в Solr. Я долго искал в Интернете и нашел несколько связанных вопросов, таких как:

Используйте функциональный запрос для повышения оценки в Solr

SolrNet запросы с функциями повышения

Затем я начал экспериментировать с такими запросами:

https://localhost:8898/solr/collection1/select?defType=edismax&fl=resourcename&indent=on&q=resourcename:"test"*^200,%20content:"test"*^1&qf=resourcename^200%20content^2&rows=1000&wt=json
https://localhost:8898/solr/collection1/select?bf=if(exists(resourcename),100,1)&defType=edismax&fl=resourcename&indent=on&q=resourcename:"test"*^200,%20content:"test"*^1&rows=1000&wt=json
https://localhost:8898/solr/collection1/select?bf=if(exists(resourcename),100,1)&defType=edismax&fl=resourcename&indent=on&q=*:"test"*&rows=1000&wt=json
https://localhost:8898/solr/collection1/select?defType=edismax&fl=resourcename&indent=on&q=*:"test"*&qf=resourcename^200%20content^2&rows=1000&wt=json

Но независимо от того, что я пытаюсь, я получаю результаты, содержащие слово test в resourcename повсюду, а не только в верхней части результатов.

Есть идеи, что я могу упустить или делать неправильно?

1 ответ

Решение

Есть много синтаксических ошибок, я бы порекомендовал взглянуть на Solr Wiki для парсеров запросов [1] .

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

Чтобы получить запрашиваемое вами поведение, я бы использовал следующие параметры запроса (цитата из вики):

q = foo bar

qf = field1 ^5 field2 ^ 10

пф = поле1^50 поле2 ^ 20

defType = dismax

С этими параметрами Dismax Query Parser генерирует запрос, который выглядит примерно так:

(+ (поле1:foo^5 ИЛИ поле2:foo^10) И (поле1: бар ^5 ИЛИ поле2: бар ^10))

Но он также генерирует другой запрос, который будет использоваться только для повышения результатов:

field1: "foo bar" ^50 ИЛИ field2:"foo bar"^20

Таким образом, вы можете повысить результаты в соответствии с совпадениями в некоторых полях, с соответствующими улучшениями, а затем также повысить фразы, появляющиеся в определенных других полях.

[1] https://cwiki.apache.org/confluence/display/solr/The+Extended+DisMax+Query+Parser

Другие вопросы по тегам