2013-03-10 2 views
1

Lucene에서 "상호 친구"기능을 구현하고 싶습니다. 친구 목록이있는 많은 문서가 있습니다. 나는 계정 마이크가 있다면Lucene은 대부분의 교차점이있는 문서를 찾습니다.

DOC: 
    id: p1 
    name: Mike 
    profile_id: 1 
    friends_id: [2,3,4,5,6,7,8] 

또는

id: p3 
name: John 
profile_id: 3 
friends_id: [6,7,8,9,10] 

또는

id: p5 
    name: Roftl 
    profile_id: 5 
    friends_id: [1,2,3,6,10] 

, 나는 루씬 쿼리 상호 친구의 높은 numer에 또 다른 계정을 찾을 싶습니다. 가능한 경우 해당 번호의 응답 필드를 추가하십시오.

답변

0

다음 단계를 시도해보십시오.

1) 마이크 문서에 대한 termvector에 액세스하십시오. 필드

2) 입구 용어는 그 용어 (즉 friend_ids)를 반복하고 용어 질의의 불리언 질의를 형성)

3

을 friends_id.

4) 해당 쿼리로 인덱스를 검색하십시오.

5) friends_id에 중복 용어가 없다고 가정하면 정상적으로 작동합니다. 최고의 결과는 요구 사항과 일치해야합니다.

Lucene이 MoreLikeThisQuery를 제공하여 쿼리에서 제공된 용어에 대해 비슷한 문서를 얻는 것이 훨씬 좋습니다.

요약하면이 쿼리는 후보 문서에 대해 유사한 문서를 찾는 데 사용됩니다. 그것이하는 일은 위의 단계들뿐입니다. 유스 케이스에서는 후보 문서에 대한 유사한 문서를 찾지 않고 문서의 필드에 대해 가장 유사한 문서를 찾습니다. 여기

MoreLikeThisQuery

Another tutorial

에 대한 샘플 코드입니다
관련 문제