Оценка Lucene: в каком контексте используется queryNorm?
Я немного сбит с толку стратегией подсчета люценов. Я знаю, что формула оценки Lucene выглядит так:
score(q,d) = coord(q,d) x queryNorm(q) X SUM <t_in_q> ( tf(t_in_d) x idf(t)^2 x t.getBoost() x norm(t,d))
Я понимаю каждый компонент в этой формуле, кроме queryNorm(q). Как поясняется в официальной документации,
queryNorm(q) - нормализующий фактор, используемый для сопоставления оценок между запросами. Этот фактор не влияет на ранжирование документов (поскольку все ранжированные документы умножаются на один и тот же коэффициент), а скорее просто на попытки сопоставить оценки по различным запросам (или даже различным индексам).
Почему мне нужно сравнивать оценки между разными запросами? Другими словами, не могли бы вы привести пример, чтобы показать, в каком контексте queryNorm(q) полезен?
2 ответа
Хороший вопрос, я задавался этим вопросом сам. В соответствии с этим аргументом ScoresAsPercentages, попытка сравнивать разные запросы или баллы по индексам или даже по одному и тому же запросу и индексу в разное время - плохая идея, и я согласен.
Насколько я понимаю, в то время как queryNorm
на самом деле не делает их строго сопоставимыми, это помогает. Они ближе к сопоставимому с запросом по умолчанию, чем без.
Я полагаю, что это также может позволить людям написать свое собственное сходство и использовать этот вызов для создания нормализованных сопоставимых показателей, используя алгоритмы, которые работают в их конкретном случае.
Была некоторая дискуссия по поводу ее удаления, которая может показаться вам интересной.
Я знаю, что вопрос старый, но у меня была похожая проблема. Причина, по которой queryNorm не был одинаковым во всех результатах поиска, заключается в том, что документы могут находиться в разных сегментах, а параметр queryNorm постоянен только в пределах одного сегмента.
Насколько я понимаю, эту проблему можно решить двумя способами:
естественно, когда данных много
установка количества осколков равным 1. Конечно, это влияет на производительность.
{"settings": {"number_of_shards": 1}}
См. http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/relevance-is-broken.html