Solr 6.5.1에서 *_txt_en
필드와 string
문서 유형 필드가 있습니다. 이 필드에, 나는 형태의 쿼리 구축하고 싶습니다 :다중 부정으로 Solr 쿼리
일치를 특정 문서 유형의 모든 문서 여기서
- 특정 문구 ("문구 하나", "문장이") 일치 할 텍스트 필드에 있어야합니다.
- 그러나이 필드에는 다른 구문 ("phrase three", "phrase four", "phrase five")이 발생하면 일치하지 마십시오.이
(documenttype:references AND (field:"phrase one" OR field:"phrase two")) AND NOT field:"phrase three" AND NOT field:"phrase four" AND NOT field:"phrase five"
내가 생각할 수있는 대안은 다음과 같습니다 :
(documenttype:references AND (field:"phrase one" OR field:"phrase two")) AND NOT (field:"phrase three" OR field:"phrase four" OR field:"phrase five")
위의 쿼리
는에 작동하는 것 같다 다음과 같이 내가 외모를 썼다
나의 현재 SOLR 쿼리 두 가지 장난감 데이터 세트. Solr을 사용하면 부울 쿼리의 일부로 negations과 같은 명확한 함정이 아닌 쓴 규칙이 있다는 것을 알게되었습니다.
내가 설명한 쿼리의 경우,이를 구성하는 데 올바른 구문입니까?
를 살펴 내 AND NOT 필드를 변형 시키십시오 : "phrase three"... \ * : \ * 형식의 일부로 부분을 만들고 NOT 필드 : "phrase three", \ * : \ * AND NOT 필드 : "phrase four"를 언급 했습니까? – tkja
@tkja - 아니요. '* : *'는 match-all-docs 절입니다. 당신이 일치시키고 자하는 문서들의 집합으로 시작하는 것처럼 보이고, 그 집합에서 몇 가지 것들을 걸러내는 것, 그것은 부정이 루신에서하도록 설계된 것입니다. 그것에 match-alls를 추가하면 얻을 수있는 문서 세트가 엉망이되어 훨씬 느려집니다. – femtoRgon
@tkja - 귀하의 대안도 잘 작동합니다. 문제가 발생하는 곳은'x AND (NOT (y))' – femtoRgon