2015-04-28 2 views
0

У меня есть searchText, и я хочу найти его в нескольких определенных полях, а не во всех полях по умолчанию из schema.xml. Сначала я попробовал в solr admin http://localhost:8061/solr/admin/form.jsp установить Строка запроса (параметр «q») на: «field1: val OR field2: val» Но по какой-то причине это не работает.Проблемы с созданием запроса фильтра solr с оператором ИЛИ

Затем я попытался установить FilterQuery (параметр «FQ») в: «field1: ПВС или field2: валь»

И это сработало, но проблема заключалась в том, что архитектура нашей системы заключается в следующем: мы можем создавать только отдельные фильтры, которые в конце концов будут связаны оператором «И». Другими словами, мы создаем fq1, fq2, ..., а затем наша система выполняет f1 = fq1 AND fq2 AND ...

Итак, может быть, кто-нибудь может посоветовать немного взломать, как установить этот раздел "field1: val OR field2 : вал» к fQ1, для корректной работы всей статьи: "f1 = fq1 И fq2 И ..."

+0

Что такое defaultOperator в вашем schema.xml? это И? –

+0

Да. Но было бы лучше не касаться schema.xml. Просто чтобы изменить запрос или запрос фильтра – blond1995

+0

попробуйте вот так: fq = fieldName: (value1 OR value2) –

ответ

0

Похоже, ваш UseCase хорошо подходит для Dismax/Edismax парсер запросов в ГУМЗ: https://cwiki.apache.org/confluence/display/solr/The+DisMax+Query+Parser

В частности:

qf Query Fields: specifies the fields in the index on which to perform the query. 

Комментарий: проблема с fq заключается в том, что они не претерпевают такую ​​же предварительную обработку запроса, как параметр q. Однако fqs поддерживают логическую логику.

+0

Спасибо , он работает хорошо. Есть только одна проблема. Теперь мой запрос: '{! Type = dismax qf = 'name symbol'} test'. Но я хочу найти в этом случае, например, 'testtt'. Итак, как я могу применять подстановочные знаки? – blond1995

+0

{! Type = dismax qf = 'name symbol'} test * –

+0

добро пожаловать! –

Смежные вопросы