Я не совсем уверен, что я ясно на запросы вы имеете в виду, но, скажем, ситуация что-то вроде этого:
Doc A: Name = «Карлос Фернандо Луис Мария Víctor Мигель Рафаэль Гонзага Хавьер Франсиско де Ассис Хосе Симау де Браганса, САБОЙЯ Bourbon е Саксен-Coburgo-Гота»
Doc B: Name = "Томас Антониу Гонзага"
Если вы ищете «gonzaga», Doc B получит более высокий балл, так как, несмотря на то, что у каждого имени есть одно совпадение, Doc B имеет гораздо более короткое имя, всего три слова, а более короткие поля взвешиваются более сильно. Это LengthNorm, на который ссылаются в TFIDFSimilarity documentation.
Есть и другие факторы. Если мы просто швырнуть каждое имя в queryparser, и посмотреть, что идет вверх, что-то вроде:
Query queryA = queryparser.parse(docA.name);
Query queryB = queryparser.parse(docB.name);
Тогда запросы, генерируемые сильно отличаются:
name:carlos name:fernando name:luis name:maria name:victor name:miguel name:rafael name:gabriel name:gonzaga name:xavier name:francisco name:de name:assis name:jose name:simao name:de name:braganca name:baboia name:bourbon name:e name:saxe name:coburgo name:gotha
против
name:tomas name:antonio name:gonzaga
там это множество причин, по которым они будут генерировать разные баллы. Рассматриваемый выше lengthNorm координирующий фактор, который повышает результаты, которые в большей степени удовлетворяют запросам, скорее всего, вступает в игру, tf, который весит документы с большим количеством совпадений в течение более длительного срока, idf, который предпочитает термины, которые появляются менее часто на протяжении всего индекс и т. д. и т. д.
Оценки относятся только к результирующему набору запроса. Изменение запроса или состояние индекса может привести к разным оценкам, и они не предназначены для сопоставимости.Вы можете использовать IndexSearcher.explain, чтобы понять, как рассчитывался счет.
«Есть множество причин, почему они будут генерировать одни и те же оценки». вы имели в виду, почему они ** не ** генерируют одинаковый балл? В вашем примере queryA и queryB, скажем, для ответа queryA мы получаем DocB со счетом SCR1 и для ответа queryB получаем DocA с SCR1. Будут ли эти две оценки одинаковыми. Похоже, этого не будет, но просто хочу уточнить вопрос. – Ganesh
Правильно. Вы не ожидали, что баллы будут равны. Даже в простом случае, когда это единственные два документа, lengthNorm, коэффициент координации и queryNorm будут разными. – femtoRgon