2012-01-11 5 views
0

수백만 개의 문서가있는 SOLR 인스턴스가 있습니다. 스키마가 잘 정의되어 있습니다 (즉, 모든 필드가 입력 됨). 모든 검색/faceting 등 모든 문제없이 괜찮 작동합니다.SOLR 분석 쿼리

그러나 현재 버전에서는 지원되지 않는 새로운 기능을 수행하려고합니다. Jetty를 사용하여 Windows에서 SOLR 3.5를 실행 중입니다. P 나무, 런던, 감독 :

아이디, 이름, 시, JobTitle

내가 같은 샘플 데이터가 있다고 가정하자 :

문제를 단순화하기 위해, 내 문서 같은 일부 필드가 포함 J 스미스, 런던, 프로젝트 관리자 D 잠금, 브라이튼, 개발자 K PRACY, 런던, 예를 위해서 개발자

이가 엄마라고 가정 사람들이 서로를 찾을 수있게 해주는 시스템입니다. 또한 Id가 고유 ID라고 가정합니다.

"샘플링"쿼리를 작성하여 어떤 기준 으로든 다른 레코드와 일치하는 레코드 집합을 찾아야합니다.

을 위의 스키마는 RDBMS-SQL 테이블 인 경우 :

것은 나에게 differfent 직위와 다른 도시에있는 사람과 일치 할 사람을 찾기 :

그래서 예를 들어, 나는 같은 기준을 정의 할 대략적인 쿼리는 다음과 같은 것 (사람을 말할 수) :

 
SELECT P.Id, 
    (
     SELECT COUNT(1) 
     FROM People PI Where PI.Id != P.Id 
     AND PI.City != P.City 
     AND PI.JobTitle != P.JobTitle 
    ) AS FindCount 
FROM 
People P 

음, 쿼리는 가능한하지 않을 수 있지만, 당신은 아이디어를 얻을. 어쨌든 Findcount는 x보다 크고 y보다 작아야한다는 다른 요구 사항이 있습니다.

SOLR에서 가능하거나 SOLR을위한 것이 아닌지 누군가가 알려줄 수 있습니까? 나는 SOLR 4가 Join 연산자를 사용한다는 것을 알고 있지만 그것은 나에게 사용을 제한하는 IN 절과 더 비슷하게 보입니다. 예를 들어, 위의 쿼리에서 일치하는 ID를 카운트가 아니라 함께 사용하려는 경우를 고려해보십시오.

모두에게 감사드립니다.

감사합니다, Immi

내가 그 1 개 쿼리 행할 생각하지 않는다 당신은 모든 사람에 대해 별도의 쿼리로 "내부 선택"을 실행에 끝낼 수 있습니다

답변