Lucene 5.4 - оценка делится на количество поисковых терминов?

У меня есть простая установка с IndexSearcher, QueryParser, SimpleAnalyzer. Запустив несколько запросов, я обнаружил, что запрос с более чем одним термином возвращает значение ScoreDoc[i].score, отличное от показанного в операторе объяснения запроса. Очевидно, это оценка, показанная в объяснении, деленная на количество поисковых терминов. какое-нибудь объяснение этому поведению?

Running search(TERM1 TERM2 TERM3)
line:term1 line:term2 line:term3
2.167882 = sum of:
  0.6812867 = weight(line:term1 in 6594) [DefaultSimilarity], result of:
    0.6812867 = score(doc=6594,freq=2.0), product of:
      0.5389907 = queryWeigh

totalHits 1
1678413725, TERM1 TERM2 TERM3, score: 0.72262734

Я понимаю, что оператор скоординированные () будет использоваться для наказания документов, которые включают только подмножество условий поиска. Однако этот документ включает в себя все условия. Какие-либо предложения?


РЕДАКТИРОВАТЬ: кажется, что деление происходит только в том случае, если запрос настроен на использование операторов OR вместо AND. Таким образом, использование запросов OR и сопоставление всех терминов по-прежнему делится на количество терминов в поисковом запросе. Я не смог найти эту часть в документации, но, по крайней мере, это объясняет разницу.

Однако применение QueryWrapperFilter, похоже, снова меняет оценку. Хотя согласно документации следует только фильтровать результаты без влияния на оценку.


Подробнее

Эти две оценки являются результатом одного и того же запроса. Только второй запрос делится

0.114700586 = product of:
  0.34410176 = sum of:
    0.34410176 = weight(line:term1 in 24) [DefaultSimilarity], result of:
      0.34410176 = score(doc=24,freq=1.0), product of:
        0.5389907 = queryWeight, product of:
          8.17176 = idf(docFreq=14, maxDocs=19532)
          0.065957725 = queryNorm
        0.63841873 = fieldWeight in 24, product of:
          1.0 = tf(freq=1.0), with freq of:
            1.0 = termFreq=1.0
          8.17176 = idf(docFreq=14, maxDocs=19532)
          0.078125 = fieldNorm(doc=24)
  0.33333334 = coord(1/3)

item_id: 1495958818, item_name: term 1 dolor sit met, score: 0.114700586


0.18352094 = product of:
  0.5505628 = sum of:
    0.5505628 = weight(line:term 1 in 6112) [DefaultSimilarity], result of:
      0.5505628 = score(doc=6112,freq=1.0), product of:
        0.5389907 = queryWeight, product of:
          8.17176 = idf(docFreq=14, maxDocs=19532)
          0.065957725 = queryNorm
        1.02147 = fieldWeight in 6112, product of:
          1.0 = tf(freq=1.0), with freq of:
            1.0 = termFreq=1.0
          8.17176 = idf(docFreq=14, maxDocs=19532)
          0.125 = fieldNorm(doc=6112)
  0.33333334 = coord(1/3)

item_id: 1677761523, item_name: some text term 1, score: 0.061173648

0 ответов

Другие вопросы по тегам