2013-08-30 5 views
1

lucene 쿼리에서 필드 순서가 중요합니까? 예를 들어lucene 쿼리의 필드 순서

,

Q = 1000

에서 & & C

는 백만 문서에 나타납니다 말할 수있는 & & B, 10000에서 B, C 결과가 될 것 동안 귀하와 A, B 및 C의 순서에 관계없이 다음 질문에 대한 응답 시간은 어떤 식 으로든 다를 것입니까?

C & & B & &

& & B & & C

합니까 루씬/SOLR가 주어진 쿼리 모두 공간과 시간의 측면에서 최고의 쿼리 실행 계획을 선택?

답변

0

쿼리가 A AND B AND C 또는 C AND B AND A이면 상관 없습니다. 쿼리 실행 시간은 같습니다.
또한 AND를 수행하는 경우 문서를 반환하기 위해 모든 쿼리 조건이 있어야하므로 문서 빈도가 동일합니다.
그러나 빈도라는 용어는 달라 지므로 점수가 달라집니다.

0

Lucene은 "정의가있는 고성능 전 기능 텍스트 검색 엔진 라이브러리 [...]"입니다. 각 용어가 나타나는 문서의 수를 분석하면 AND 연산과 Lucene을 수행하는 순서를 쉽게 결정할 수 있으며 확실히 수행 할 수 있습니다.

알고리즘에 관심이있는 경우 가장 낮은 카디널리티가있는 용어 사이에 AND를 실행하면 최상의 성능을 얻을 수 있으며 가장 높은 것을 얻을 때까지 계속 수행 할 수 있습니다.

이렇게하면 정렬 된 게시 목록 [두 개의 게시 목록의 n 및 m 길이가있는 O (n + m)]과 건너 뛰기 포인터에 대한 병합 알고리즘 덕분에 더 작은 숫자를 반복 할 수 있습니다 of docIDs.