Проблема запроса в Solr - PullRequest
0 голосов
/ 01 июня 2011

Мы используем Solr для поиска по индексу магазина и по индексу товара. В настоящее время магазин имеет поле shop_keyword, которое также содержит ключевые слова назначенных ему товаров. Ключевые слова магазина разделены пробелом. Следовательно, если есть продукт с ключевым словом «яблоко», а другой с «оранжевым», поиск магазинов с Apple AND Orange вернет магазин для этих продуктов.

Однако это неверно, так как мы хотим, чтобы при поиске магазинов, имеющих Apple AND Orange, возвращались магазины, в которых в качестве ключевых слов использовались товары как с яблоком, так и с апельсином.

Мы попытались решить эту проблему, сделав ключевые слова магазина многозначными и присвоив ключевые слова каждому товару магазина в качестве нового значения в ключевых словах магазина. Однако, как было подтверждено в другом посте Запрос документов Solr с одним из многозначных полей , Solr не поддерживает "все слова должны совпадать в том же значении многозначного поля ".

(Надеюсь, я все хорошо объяснил)

Как мы можем это сделать? В идеале нам не следует резко менять нашу поисковую инфраструктуру.

Спасибо!

Krt_Malta

1 Ответ

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

Я предполагаю, что shop_keyword - это текстовое поле.

При поиске по ключевому слову Apple AND Orange будут возвращаться только термины shop_keyword, содержащие и Apple и Orange, при условии, что вы выполняете поиск поэто поле исключительно (shop_keyword:Apple AND Orange).Например, вы должны видеть только результаты, которые содержат:

Apple Orange

А не:

Apple Mango

(я смог подтвердить это на моем локальном экземпляре Solr с текстовым полем)

Однако вы увидите результаты, которые содержат:

Apple Lime Orange Tree

(где "Оранжевое дерево" - это одно слово, но с пробелами)

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

Если у вас есть контроль над терминами, и они не используются в свободном текстовом поиске (или для Google), вы можете удалить пробелы в ключевых словах и добавить цитаты в ваш поиск.Это решит вашу проблему:

shop_keyword:"Apple" AND "Orange"

Не вернет "Orange_Tree".

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

Не идеально, но я надеюсь, что это как-то поможет =).

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