Как повысить результаты, содержащие поисковую фразу в поле
Я пытаюсь поместить результаты поиска 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