2017-02-23 7 views
0

Solr을 처음 사용했습니다.단일 라운드 브래킷이 작동하지 않는 Solr 검색

'('또는 ')'중 하나를 포함하는 레코드를 검색하려고합니다. 다음과 같이

기록을 검색하는 쿼리는 다음과 같습니다

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

위의 쿼리는 SOLR 검색을 나누기.

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

누군가가이 문제를 해결하는 데 도움이 바랍니다 수 :

나는 다음과 같은 정규식을 사용하여() 문자를 이스케이프 무엇입니까?

+0

기본적으로 찾고있는 것은 괄호가있는 쿼리입니다. –

+1

"solr 검색을 중단 하시겠습니까?"라는 의미는 무엇입니까? 충돌, 오류, 제로 히트? @Persimmonium에서 제안하는 쿼리는 문제가 없으므로 분석기에서 괄호를 제거하는 것이 문제 일 수 있습니다. 'name : known \) word' 검색과'name : known \) word *'를 수행하여이를 확인하십시오. 마지막 것이 히트를주지 않는다면, 당신의 분석기는 아마도')'를 제거 할 것입니다. GUI에서 _Analysis_를 통해이 작업을 수행 할 수도 있습니다. GUI에서는 더 많은 것을 알려주고 (더 혼란 스러울 수도 있습니다). –

+0

귀하의 질문에서 알 수 있듯이 '('또는 ')'만 필요합니다. 다음 질의는'name : * \ (* OR name : * \) * NOT name : * \ (* \) *' –

답변

2

그래서 내가 거기에 무슨 일이 일어나고 있는지 식별 할 수있는 정규식 아주 좋은 아니지만,이 SOLR 쿼리 작업을해야합니다 :

q=name:*\(abc* 

없이 그것을합니까?

in the lucene doc에서 알 수 있듯이 검색어에서 이스케이프 할 문자는 (.)를 검색 할 때 이스케이프해야합니다. 그러나 나는 당신의 모범에서 모두) 언어의 일부라는 것을 이해합니다.