2009-04-24 4 views

답변

0

작업에 따라 다릅니다. OR (name : bill OR gender : 남성)과 같은 OR을 수행하는 경우이 둘 중 최대 값을 취합니다. 당신이 AND를하고 있다면, 그것은 합계를 할 것입니다.

+0

당신의 대답은 잘못이다. Shashikant Kore는 올바르게했습니다. –

3

점수의 세부 사항은 Similarity 클래스에서 읽을 수 있습니다. 이 방정식에서 매개 변수는 실제로 필드를 의미하는 경우 Document를 참조하여 참조됩니다. 따라서 용어 빈도는 문서에서 주어진 필드의 용어 빈도입니다. 이렇게하면 여러 필드에 대한 쿼리가 자동으로 처리됩니다.

KenE의 답변이 잘못되었습니다. (방정식에 MAX 연산자가 없습니다.) 필드의 각 쿼리 점수는 최종 점수를 합산합니다. 검색어 (이름 : 청구 또는 성별 : 남성)의 경우 결과는 (이름 : 청구서) 및 (성별 : 남성)의 점수 합입니다. 일반적으로이 두 가지 기준을 모두 만족하는 문서는 합계로 인해 점수가 높아지고 올라갑니다.

0

Shashikant Kore는 각 필드의 점수가 합산되었다고 말하는 것이 옳습니다. 그러나 이것은 queryNormcoord 요인의 기여 전에 만 해당되며 최종 점수가 합산되지는 않습니다.

각 점수는 검색어에 따라 계산되고, 따라서 (name:bill), (gender:male)(name:bill OR gender:male)마다 상이되는 queryNorm 계수에 의해 곱해진다. 결합 된 쿼리에 대한 queryNorm도 두 개의 단일 검색어에 대한 queryNorm의 합계가 아닙니다. 따라서 각 점수를 해당 검색어의 queryNorm 요소로 나눈 경우에만 점수가 합산됩니다.

또한 coord 요소가 부과 될 수 있습니다. 기본 스코어러는 점수와 일치 된 검색어의 비율을 곱합니다. 따라서 모든 조건이 일치하는 queryNorm (또는 coord이 비활성화 됨)을 고려한 후에 합계에만 의존 할 수 있습니다.

explain 기능을 사용하여 정확하게 점수를 계산하는 방법을 볼 수 있습니다.이 기능은 Solr에서 debugQuery=true 매개 변수를 통해 사용할 수 있습니다.

0

루씬의 기본 유사성 점수를 사용하여, 나는 부울 쿼리를 사용하고 다음과 같이 최종 공식 가지고있다 : (죄송이 latex에)

score(q, d) = \sum_{f \in fields} \sum_{t \in query} idf(t, f) queryNorm(query) \times idf(t, f) tf(t, d, f) fieldNorm(f) 
+0

이것은 lucene 5_3_0을 기반으로합니다. – vahid

관련 문제