2011-02-16 6 views
0

나는 학교 이름과 플레이어 이름을 사용하여 Lucene 검색을 만들어 동영상을 반환하려고합니다. 두 가지 방법 중 하나를 결정하려고합니다.Lucene Queries - 문서 합류 및 관련성 유지

방법 A는 비디오 문서에서 학교 이름과 선수 이름을 색인화하고 부울 쿼리를 사용하여이 필드를 검색하는 것입니다.

방법 B는 별도의 문서 형식을 만들고 3 가지 고유 한 쿼리를 만드는 것입니다.

문서 :

  • 학교 문서 - 저장합니다 school_id 인덱스
  • 플레이어 문서
  • 학교 이름 - school_id 및 sport_id 및 인덱스 플레이어 이름

3 개 쿼리를 저장 :

  1. 학교에 다니는 모든 학교 문서 검색 me
  2. 플레이어 이름이
  3. 인 모든 선수 문서 검색 처음 두 검색어에서 school_id 및 sport_id가있는 모든 콘텐츠에 대한 동영상을 검색합니다.

두 방법의 장단점은 무엇입니까?

답변

3

거의 확실하게 방법 A와 함께 가고 싶습니다. 두 인덱스의 관련성 점수를 결합하려면 본질적으로 Lucene을 재 작성해야합니다.

학교/플레이어가 이름을 변경하면 재 색인해야한다는 단점이 있습니다. 그것은 꽤 이상한 것 같다.

Lucene은 실제로 검색 할 자유 텍스트가 많은 경우에만 유용합니다. MySQL이나 다른 좋아하는 rdbms의 자유 텍스트 기능을 사용하는 것이 단지 몇 단어 (학교 이름과 같은)일지도 모르겠지만 아마 그것도 빠르며 구현하기가 훨씬 쉬울 것입니다. 이름 바꾸기에 다시 색인을 붙이는 것과 같은 문제는 없습니다.

+0

방법 A와 관련하여 성능 문제가 있습니까? 색인을 생성 할 약 10 만 개의 비디오가 있습니다. – jon077

+0

@ jon077 : 아니요. 100k는 아주 작은 색인이며, 방법 A는 어쨌든 그것을 수행하기위한 제안 된 방법입니다. – Xodarap