2011-11-22 5 views
7

solr에서 nodeId : -1과 같이 음수로 한 필드를 검색하려고합니다. />solr에서 음수를 검색하는 방법은 무엇입니까?

SOLR 때 사용 "노드 아이디를 오류가 발생 < 필드 이름 ="노드 아이디 "유형 ="INT "="true "로 저장 ="true "로 색인 : 은의 schema.xml에서,이처럼 정의 - 1 "을 다음과 같이 검색하십시오 : org.apache.lucene.queryParser.ParseException : 'storeId : -1': 1 행 8 열에서" "-" "-" "을 (를) 파싱 할 수 없습니다." "..."* "... ... ... ... ..." "..." "... ...

storeId로 검색해야합니다. 또는 storeId : "- 1"대답을 얻으려면

이제 질문 : 모든 solr 구성 파일을 수정할 수 있습니까? 이스케이프 문자없이 검색 하시겠습니까? 또는 Java 코드를 수정하지 않고이 문제를 해결할 수있는 또 다른 방법입니다. 감사합니다. .

답변

2

"-"는 쿼리 구문 분석기의 특수 문자로 일부 절을 금지로 표시하는 데 사용됩니다. 이 문자를 이스케이프하지 않으려면 쿼리 구문 분석기를 변경해야합니다.

raw query parser : q={!raw f=nodeId}-1에 시도해 볼 수도 있지만 기본 쿼리 구문 분석기의 기능은 제공하지 않습니다. 실제로 원시 쿼리 구문 분석기는 순수한 용어 쿼리 만 실행할 수 있습니다.

3

저는 개인적으로 Java 코드 내부를 올바르게 이스케이프 처리하는 것이 더 좋은 방법이라고 생각합니다. ClientUtils.escapeQueryChars이 선택 방법입니다.

관련 문제