Исходя из моего предыдущего вопроса:
Манипулировать запросом 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 в качестве логического оператора по умолчанию ... Какие-либо другие предложения?