Как мне сделать логическое ИЛИ в solr? - PullRequest
3 голосов
/ 08 июля 2011

Я совершенно новичок в этом ...

Я использую durpal с модулем apachesolr.

У меня есть следующий фильтр:

<code>(  tid:19895 OR tid:19937 ) AND  type:poster"
Это не возвращает никакихрезультаты, но если у меня есть следующее, он возвращает результаты, как ожидалось
<code>(  tid:19937 ) AND  type:poster"
РЕДАКТИРОВАТЬ: Это все в фильтре.Мне нужно иметь список приливов, которые могут быть вместе с типом быть постером.Так что это должно быть типа: плакат И один из следующих приливов: 19895, 19937

Ответы [ 3 ]

2 голосов
/ 16 июля 2011

хотя:

((tid: (19895 ИЛИ 19937)) И тип: poster) должны работать независимо от того, установлен ли defaultOperator ИЛИ / И

, лучше добавить предложения в качестве отдельного фильтра,поэтому добавьте два фильтра как

tid: (19895 ИЛИ 19937)

type: poster

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

0 голосов
/ 12 июля 2011

В качестве FYI, если условие defalut boolen равно "ИЛИ", задайте запрос следующим образом:
((tid: (19895 19937)) И тип: poster) Это работает нормально, я протестировал

0 голосов
/ 08 июля 2011

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

добавление + означает, что поле является обязательным

+tid:19895 would mean that TID field is required to equal exactly 19895

* - это подстановочный знакпоэтому добавление означает, что ваше поле будет содержать значение, но не обязательно равно значению.

tid:19895* would mean TID field contains 19895

Похоже, проблема заключается в определении поля дважды в одном и том же фильтре ???

Так что попробуйте удалить второй «tid:»

В моем тестировании я сделал это: Мой запрос SOLR:

+type:poster

И фильтр:

tid:19895 OR 19937

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

с использованием ИЛИ и НЕ в запросе solr

...