2017-02-23 18 views
0

Я новичок в Solr.Solr поиск с одним круглым кронштейном не работает

Я пытаюсь найти записи, содержащие один круглый кронштейн, либо '(' или ')'.

Запрос для поиска записи выглядит следующим образом:

q=((name: (*\(abc*))) 

Этот запрос нарушает поиск Solr.

Я побег) характер (используя следующее регулярное выражение:

value = value.replace(/([()])/g, '\\$1'); 

Может кто-то пожалуйста, помогите, чтобы устранить эту проблему?

+0

В основном поиск содержит запрос с круглыми скобками. –

+1

Что вы подразумеваете под словом "breaks solr search"? Ошибка, ошибка, ноль? Запрос, предлагаемый @Persimmonium, прекрасен, поэтому ваша проблема может заключаться в том, что ваш анализатор удаляет круглые скобки. Проверьте это, выполнив поиск по имени: name: known \), за которым следует 'name: known \) word *'. Если последний не дает хита, ваш анализатор, вероятно, удаляет ')'. Вы также можете сделать это через _Analysis_ в графическом интерфейсе, который расскажет вам больше (и может быть более запутанным). –

+0

Как я понимаю из вашего вопроса, вам нужны только «(или«) »не оба. Следующий запрос будет служить целям 'name: * \ (* OR name: * \) * NOT name: * \ (* \) *' –

ответ

2

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

q=name:*\(abc* 

делает это нет?

Как вы можете видеть in the lucene doc, единственный символ, который нужно выполнить в вашем запросе, - это (.) Также нужно будет экранировать, если вы его ищете. Но я понимаю, что в вашем примере все) являются лишь частью языка.