2012-11-13 2 views
2

사용자 검색어에 불용어 만 포함 된 경우 Solr에서 모든 결과를 반환하고 싶습니다. q =, (기본적으로 Solr은 0 개의 결과를 반환합니다). Solr 구성에 어떤 플래그가 있습니까? 또는이를 구현하는 데 사용할 수있는 Solr 쿼리 구문 구조를 사용할 수 있습니까?사용자 쿼리에 불용어 만 있으면 Solr의 모든 결과를 반환 할 수 있습니까?

저는 클라이언트 측에서 스톱 워드 논리를 복제하고 모든 용어가 불용어 인 경우 q=*:*을 발생시키는 아이디어를 정말 좋아하지 않습니다.

+0

정지 필터 용 정지 필터 또는 분석기를 사용하고 있습니까? – stephanruhl

+0

을 사용하는 경우 스톱 워드에 관한 구성에 대한 세부 정보를 줄 수 있다면 더 나을 것입니다. 동기를 좀 더 설명해보십시오. 그것은 아마도 사용자가 명시 적으로 요구하지 않고 모든 문서가 검색에서 반환되기를 원할 것 같지 않습니다. – joeln

답변

0

이 문제의 해킹 해결책은 q=*:* AND _query_:"{! var=$userq}"을 설정하고 q 대신 userq URL 매개 변수로 사용자 쿼리를 보내는 것입니다.

이렇게하면 결과가 모든 문서와 사용자 쿼리의 교집합으로 명시 적으로 설정됩니다 (_query_:"{!...}" 구문에 익숙하지 않은 경우 http://wiki.apache.org/solr/LocalParams 참조).

참고 :이 쿼리는 사용자 쿼리와 비교할 때 점수는 같지만 순서는 동일합니다.

1

Edismax Query parser을 확인하십시오. Edismax Query parser은 검색어가 모든 불용어 인 경우 다른 검색어를 처리합니다.

고급 스톱 워드 처리를 포함 중지 단어는 쿼리의 필수 부분에 필요하지 않은 여전히 ​​근접 강화 부분에 사용된다. 쿼리가 모두 중지 단어로 구성된 경우 등은 "일하거나 는 할 수 없습니다"모든 단어는이 모든 (*:*) 결과 쿼리로 작동하지 않을 것입니다 비록

을 필요하지만 반드시 일치합니다 대부분의 결과.

+0

stopwords 만 구문에 포함되어있는 경우 stopwords 검색을 설명하는 edismax 쿼리를 작성할 수 있습니까? – MTA