2012-07-06 5 views
2

SOLR 4.0으로 검색하고 구문 쿼리를 시도 할 때 약간의 문제가 있습니다.SOLR 구문 쿼리

"idx_text_general_ci"라는 필드에는 모든 필드로 구성된 대소 문자를 구분하지 않는 필드 (모두 소문자로 구분)가 있습니다.

<lst name="debug"> 
<str name="rawquerystring">idx_text_general_ci:marine fitter</str> 
<str name="querystring">idx_text_general_ci:marine fitter</str> 
<str name="parsedquery"> 
(+(idx_text_general_ci:marine DisjunctionMaxQuery((id:fitter))))/no_coord 
</str> 
<str name="parsedquery_toString">+(idx_text_general_ci:marine (id:fitter))</str> 
:

/select?defType=edismax&q=idx_text_general_ci:marine%20fitter&debugQuery=true 

debugQuery = 실제 출력 아래 -

나는 시도하고 내 SOLR 대신 2 개 단어로 문구를 분할 문구를 검색하기를 거부 구 (해양 배관공)를 검색

위와 같이 쿼리를 두 부분으로 나눕니다 (idx_text_general_ci : marine, id : fitter).

내가 가진 문제는 idx_text_general_ci 필드에 두 번 나타나는 "marine fitter"와 정확하게 일치하지만 "marine"이라는 단어가 3 번 나오는 문서보다 점수가 낮습니다. 내 SOLR이 예상대로 구문을 사용하여 필드를 검색하는 경우에는 그렇지 않을 것입니다.

문구를 따옴표로 묶으면 결과가 0이됩니다.

올바른 방향으로 어떤 도움이나 찔림이라도 대단히 감사하겠습니다. 사전에

감사

알렉스

답변

2

여기 일어나고 기본 쿼리 필드가 id을 것으로 나타나고

idx_text_general_ci:marine fitter 

로 쿼리를 지정하고 있기 때문에 그것이로 번역됩니다 것입니다 무슨 솔직은 idx_text_general_ci:marineid:fitter에 대한 DisjunctionMaxQuery로 사용됩니다. 아마도 idx_text_general_ci:marineidx_text_general_ci:fitter을 원할 것입니다. 다음과 같은 두 가지 옵션이 있습니다. 1) 각 단어 앞에 콜론을 붙여 올바른 필드를 붙이거나 schema.xml의 defaultSearchField를 idx_text_general_ci으로 변경할 수 있습니다.

큰 따옴표로 묶을 때 왜 결과가 0이되는지 왜 당황 스럽습니까? 그러나 위와 같은 조치를 취하는 것이 도움이 될 것입니다.

+0

안녕하세요. 나는 그걸 시도해 봤지만 둘 중 어느 것도 일하지 않았다. 해양 + idx_text_general_ci : 벤치 및 Q = idx_text_general_ci : 쿼리 (들) 나는 시도는 >>> Q = idx_text_general_ci 아래에있는 해양 % 20idx_text_general_ci : 이 그것을 할 올바른 방법 배관공 있습니까? – Alex

+0

Solr 관리자 패널에서이 작업을 시도해 볼 수 있습니까? 거기에서 디버그하는 것이 훨씬 쉽습니다. 브라우저 바에 직접 입력하는 경우 공백이 아닌'+ '기호를 사용하십시오. – Ansari

+0

@Alex 관리자 패널에서 분석 탭을 사용하여 문서의 일부를 입력하고 색인이 생성 된 방법을 확인한 다음 쿼리를 입력하고 처리 방법을 확인할 수 있습니다. 디버그 상자를 확인하면 일치하지 않는 부분을 파악할 수 있습니다. – Ansari