Сначала Solr отображал некоторые результаты, когда они являются частью результатов. - PullRequest
0 голосов
/ 08 сентября 2011

Я считаю это Solr Psedo-DOC

<doc>
<field name="title"/>
<field name="name"/>
<field name="keywords"/>
</doc>

Некоторые документы будут иметь ключевое слово "up" , что означает, что они должны появляться первыми (несмотря на их начальную позицию заказа) тогда и только тогда, когда они являются частью результатов поиска. ,

Итак, допустим, у меня есть:

doc1('title1','Bob, Alice','people, up, couple')
doc2('title2','Smart Phone, Laptop, Bob','devices, electronics')

если я сделаю запрос с " title: title2 name: Bob ", то сначала я должен получить doc1 (он имеет ключевое слово "up"). если я запрашиваю " имя: Боб ", я все равно сначала получаю doc1 по той же причине. если я сделаю запрос " name: Laptop ", то я получу только doc2 в моих результатах. Не следует включать doc1, поскольку он не соответствует моему поисковому запросу.

Любое предложение сделать это?

Ответы [ 2 ]

0 голосов
/ 08 сентября 2011

У вас есть несколько вариантов сделать что-то подобное:

  • функция запрос / повышение запроса (в обработчике dismax)
  • во время индексации (повышение документов)
  • Извлеките ключевое слово «вверх» в дополнительное поле и сортируйте по этому полю, затем наберите

Например (с обработчиком dismax):

 /select?defType=dismax&q=...&bq=keywords:"up"^1000
0 голосов
/ 08 сентября 2011

Это можно решить с помощью увеличения времени запроса Solr.Таким образом, следуя указаниям Solr Relevancy FAQ - вы можете добавить дополнительный расширенный поисковый термин ко всем запросам, например, title:title2 name:Bob keywords:up^2

Вы также можете во время индексации для каждого документа определитьключевое слово up присутствует, затем сохраните его в дополнительном поле (например, логическое) в вашей схеме и увеличьте результаты запроса на основе этого логического поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...