Lucene QueryParser - создать «переносимый» запрос для отправки в SOLR - PullRequest
0 голосов
/ 21 ноября 2011

Исходя из моего предыдущего вопроса:

Манипулировать запросом Lucene перед выполнением поиска

Я столкнулся с проблемой, когда хочу отправить QueryParser проанализировал Query (Query.toString()) на веб-сервисе, который использует SOLR с оператором по умолчанию AND.Поскольку Lucene имеет OR в качестве оператора по умолчанию, любые термины OR остаются «как есть».Например, учитывая запрос:

(f1:cat OR f1:dog) AND f2:cow AND f3:"tree frog"

после анализа (с QuerParser.setDefaultOperator(QueryParser.Operator.AND)), версия String становится такой:

+(f1:cat f1:dog) +f2:cow +f3:"tree frog"

Когда она передается в SOLR с предполагаемым ANDоператор, два члена f1 получают AND вместо "OR".

Единственный обходной путь, который я могу придумать, - это изменить мою установку SOLR, чтобы использовать OR в качестве логического оператора по умолчанию ... Какие-либо другие предложения?

1 Ответ

2 голосов
/ 21 ноября 2011

Оператор по умолчанию может быть переопределен для каждого отдельного запроса. Для примера:

Использование параметров: http://solr/select?q=query&q.op=OR

Или используя локальные параметры: http://solr/select?q={!lucene q.op=OR}query

Подробнее см. SolrQuerySyntax .

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