2014-06-09 5 views
1

Lucene.net을 올바르게 호출하는지 알 수 없습니다. MoreLikeThis 함수를 호출하여 문서 자체를 비교하려고합니다. 점수가 1.0 점이되어야한다고 생각하는 점수가 0.3174651에 불과합니다. 나는 틀린 예상을 기대하고 있나?MoreLike Lucene.Net에서 동일한 문서를 서로 비교할 때 100 % 점수를 반환하지 않습니다

   int docId = hits[i].Doc; 
       var query2 = mlt.Like(docId); 
       TopScoreDocCollector collector = TopScoreDocCollector.Create(100, true); 
       searcher.Search(query2, collector); 
       ScoreDoc[] hits2 = collector.TopDocs().ScoreDocs; 
       var result = new List<string>(); 
       for (int k = 0; k < hits2.Length; k++) 
       { 
        docId = hits2[k].Doc; 
        float score = hits2[k].Score; 
       } 

내가 뭔가 잘못하시기 바랍니다하고 있는가 :

이 내 코드?

답변

2

당신이 잘못하고있는 것은 Lucene 점수가 백분율이라고 생각하는 것입니다. 그들은 그렇지 않습니다.

쿼리에 대한 문서 점수는 해당 단일 쿼리의 컨텍스트 내에서 일치 강도를 비교하는 데 사용됩니다. 그들은 결과를 분류하는데 매우 효과적이지만, 그들은 are not percentages이며 일반적으로 사용자에게 표시하기에 적합하지 않습니다.

+0

나는 이것도 처음 접했기 때문에 나는 당신의 반응을 이해하고 있는지 확인하고 싶습니다. 숫자가 모호하지만 그의 점수가 "완벽한 점수"에 해당한다고 말할 수 있습니까? 그래서 예를 들어, 제게 알려지지 않은 다른 문서가 .3111111에 비교되어 돌아 왔을 때, 나는 그것들이 ("규모"에 기초하여) 매우 유사 할 것이라고 기대할 수 있습니까? – Kmanc

+0

아니요, 완벽한 점수가 없습니다. 위의 최대 점수는 단순히 최상의 결과 점수입니다. lucene 점수에 포함 된 많은 요소는 임의로 커질 수 있으므로 최대 (완전) 점수가 명확하지 않을 수 있습니다. 동일한 점수를 갖는 두 개의 문서가 색인의 현재 상태와 관련하여 쿼리와 유사하게 대략 같다고 기대할 것입니다. 그들은 서로 공통점이 전혀 없습니다. – femtoRgon

+0

글쎄요.하지만 두 개의 문서가 정확히 동일하다는 것을 안다면 두 점수 사이의 점수가 최대 점수라고 가정 할 수 있습니까? – Kmanc