Запрос Solr на основе подмножества строкового поля - PullRequest
0 голосов
/ 30 сентября 2011

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

Строка, которую я отправлю, содержит целые числа, разделенные пробелами.Я хочу, чтобы solr дал мне все записи, где определенное строковое поле является подмножеством чисел, которые я предоставляю в качестве строки запроса.

Пример ...

Представьте, что у меня есть индексированное строковое полев Solr, который на самом деле представляет собой набор целых чисел, разделенных пробелом.Например, допустим, у меня есть поле следующей записи, индексированное в Solr:

  • "888110"
  • "888110 888120"
  • "888110 888120 888130"
  • "888110 888120 888130 888140"
  • "888110 888130 888140"
  • "888110 888140"
  • "888140"
  • "888120 888130"

Я хочу, чтобы Solr получил запрос, например, с "888110 888140" и ответил следующими записями:

  • "888110"
  • "888110 888140"
  • "888140"

Если я запросю по "888110 888120 888130", найденные записи будут ...

  • "888110"
  • " 888110 888120 "
  • " 888110 888120 888130 "
  • " 888120 888130 "

Полученные записи должны быть точно подмножествомчисла, представленные в виде строки.

Можно ли заставить Solr вести себя так?

1 Ответ

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

Я немного сбит с толку, почему в первом примере «888110» не возвращается, а во втором примере.

В любом случае, если я вообще понимаю, что вы пытаетесь сделать, я бысоздайте новое поле multi valued и используйте ваши логические операторы (AND, OR) в запросе.

например, в схеме

       <field name="code_string" ... />
       <field name="codes" ... multiValued="true"/>

, поэтому у вас есть документ типа

<doc>
    <arr name="codes">
       <str>811001</str>
       <str>811002</str>
    </arr>

и в вашем запросе

?=codes=811001 OR codes=811002 OR ....

По моему опыту с solr, как правило, чище / удобнее обслуживать, жертвуя небольшим количеством памяти, а не создавать изнурительно сложные цепочки фильтров и т. Д.

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