Как выполнить поиск в многозначном поле в Solr?

У меня возникли трудности с поиском в Solr. Мой Solr имеет многозначное поле, подобное этому документу ниже:

<int name="id">2166324592435</int>
...others fields
<arr name="Series">
   <str>The Walking Dead<\str>
   <str>Game of Thrones<\str>
<\arr>

Серия многозначных полей имеет сериал, на который ссылается документ. В приведенном выше примере мой документ говорит о «Ходячих мертвецах» и «Игре престолов». У меня могут быть документы с одной, двумя и более сериями или даже без серий.

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

q=series:The Walking Dead or series:Game of Thrones or ...&wt=json

Я думаю, что я делаю неправильно. Как правильно это сделать?

заранее спасибо

Тьяго


person Thiago    schedule 08.07.2012    source источник


Ответы (5)


В дополнение к ответу @ user1452132 -

Когда вы ищете q=series:The Walking Dead, в поле серии ищется только the, а walking dead — это поиск в поле поиска по умолчанию.

Сформированный запрос будет выглядеть следующим образом: серия: ИЛИ текст: (Ходячие мертвецы)

Вы можете отлаживать запрос, используя debugQuery=on в URL вашего запроса.

Вы можете использовать обработчик запросов Dismax, чтобы сделать его более управляемым.

person Jayendra    schedule 09.07.2012

Попробуйте что-то вроде этого:
series:("The Walking Dead" OR "Game of Thrones")

person silviu.ct    schedule 27.01.2015
comment
При использовании в качестве параметра filter query это действительно работает. - person user218867; 01.09.2015

Использовать в параметре fq (запрос фильтра),

E.g

    name:("Java" OR "Python")
    name:("Java" AND "Web")

    // multivalued fields
    author_ids:(1733 OR 58)
    author_ids:(1733 AND 58)

Кодировка Solr URL:

  • ':' стать '%3A'
  • пробел становится "+"

Таким образом, вы можете получить такой URL:

http://localhost:8983/solr/xxx/select?q=programming&fq=title%3A("Java"+AND+"web")&wt=json&indent=true&defType=edismax&qf=title&stopwords=true&lowercaseOperators=true

person user218867    schedule 01.09.2015

В зависимости от того, какова цель поиска, попробуйте выполнить следующие два поиска.

сериал: «Ходячие мертвецы» ИЛИ сериал: «Игра шипов»

серия:(Ходячие мертвецы) ИЛИ серия:(Игра шипов)

Прочтите синтаксис запроса solr и лежащий в его основе Синтаксис запроса Lucene

person user1452132    schedule 09.07.2012

Я думаю, что ваша настоящая проблема заключается в использовании OR в нижнем регистре. Когда вы делаете что-то подобное, значение or ищется в defaultTextField. Также не забудьте поставить кавычки, если в вашем запросе есть пробел, и вы ищете точное совпадение.

person tugcem    schedule 23.08.2013