2013-08-01 1 views
0

저는 과거에 solr과 함께 작업했지만 대부분 검색이 간단했습니다. 다음과 같이 예제를 사용하여 결과를 "AND"로 제한 할 수있는 검색 결과를 얻으려고합니다.doc 필드의 다른 값을 기준으로 "AND"를 사용하는 Solr 쿼리

Doc1 -> StudentID : 123 ClassID : 001

문서 2 -> StudentID : 123 ClassID가 : 002

문서 3 -> StudentID : 987 ClassID가 : 001

원하는 쿼리의 "영어"버전이 나에게 수업에서 모든 학생들을 부여 "할 것 classID : 001 및 ClassID : 002로 설정하면 StudentID : 123 만 반환하고 Student : 987은 생략합니다.

사실, 우리의 실제 쿼리는이 클래스보다 훨씬 복잡합니다. 클래스는 시간, 날짜 등과 같은 다른 속성을 가질 수도 있습니다.하지만 기본 "AND"필터링을 수행하는 데 도움이되는지 알고 싶었습니다. .

이것은 현재 구현 중이며 작동하는 것처럼 보이지만 클래스 수가 동적 일 수 있으므로 mincount를 동적으로 업데이트해야합니다. "더 나은"방법이 있다면 궁금 할 것입니다.

q=*:*&fq=(ClassID:001)OR(ClassID:002)&rows=0&group=true&group.field=ClassID&group.facet=true&group.ngroups=true&facet=true&facet.field=ClassID&facet.mincount=2&facet.field=StudentID 

나는 아직 발견하지 못한 직설적 인 방법이있을 것이라고 확신하므로 전문가에게 질문을 전달할 것입니다. 도움을 주시면 감사하겠습니다!

답변

0

schema.xmldefault operatorOR으로 설정할 수 있습니다. 이것은 모든 (또는 대부분의) 케이스가 OR 쿼리를 수행하려고한다고 가정합니다. 클래스 ID가 동적이기 때문에

classId:('001' '002') 

, 당신은 당신의 클라이언트에서 classid의 목록을 가입하여이 값을 삽입 할 수 있습니다 :

은 그럼 당신은 이런 식으로 뭔가 할 쿼리를 변경할 수 있습니다.

관련 문제