Повысьте результаты поиска с помощью совпадения одного слова из multiValued - PullRequest
0 голосов
/ 22 июня 2011

У меня есть схема solr с определенными полями:

<field name="id" type="integer" indexed="true" stored="true" required="true" multiValued="false" />
<field name="title" type="text" indexed="true" stored="true" multiValued="false" />
<field name="note" type="text" indexed="true" stored="true" multiValued="false" />

Теперь я ищу ее по запросу (где % s - моя строка поиска)

q={!boost b=recip(ms(NOW,date),3.16e-11,1,1)}%s&defType=dismax&qf=title^100 note

и мне нужно что-то вроде тегов для каждой записи.

<field name="tags" type="string" indexed="true" stored="false" multiValued="true" />

Как повысить результаты для этих записей, если одно из слов совпадает со значением из поля "теги"?

update

Только что выяснил, что если я удалю {! Boost b = rec (ms (NOW, date), 3.16e-11,1,1)} из моего q, мой запросработает именно так, как я хочу.Но при этом он не

обновление 2

Просто выяснил, что ранее «только что выяснили» было совершенно неправильно.Я получаю это работает для некоторых строк поиска, но это не работает для меня.Я думаю, что мне нужно это поведение:

в полях «заголовок» и «примечание» мне нужно искать слова с «И», но в поле «теги» мне нужен поиск с «ИЛИ».Как я могу сделать это с помощью dismax?

Я пытаюсь сейчас с {! Boost} и функциями запросов, но без какого-либо хорошего результата

Ответы [ 2 ]

0 голосов
/ 23 июня 2011

Вы можете использовать dismax bq (запрос на повышение) для достижения этой цели. Читайте о bq здесь: http://wiki.apache.org/solr/DisMaxQParserPlugin#bq_.28Boost_Query.29

Вам придется разбить запрос на отдельные слова и поисковые теги, используя каждое из них по отдельности. Поэтому, если ваш запрос «abc pqr», вы получите:

q={!boost b=recip(ms(NOW,date),3.16e-11,1,1)}%s&defType=dismax&qf=title^100 note&bq=tags:abc OR tags:pqr
0 голосов
/ 22 июня 2011

Ваш запрос выглядит так, как будто вы скопировали его из Интернета.

1.) Убедитесь, что в вашей среде существует поле с именем «date».

2.) Посмотрите на вывод solr. Если вы запускаете solr внутри tomcat, посмотрите на catalina.out ...

... для количества попаданий и ошибок.

Как повысить результаты для тех записей, где одно из слов совпадает со значением из поля "теги"?

Посмотрите на компонент высоты для этого: http://wiki.apache.org/solr/QueryElevationComponent

...