Один хак, который я мог бы выяснить, - это использовать разные (уникальные) boost
факторы для каждого термина в запросе, а затем извлекать коэффициенты повышения для каждого соответствующего термина из оценки debug
, чтобы определить, какой термин этот показательпришел от.
Например, мы можем запросить с помощью foo~2^3.0 bar~2^2.0
(повысить оценки от бара на 2,0, не сравнивая оценки с foo).Из результатов оценки отладки проверьте коэффициенты усиления:
Result 1: food bars: score <total score 1> = food * 3.0 * <other scoring terms> + bars * 2.0 * <other scoring terms>
Result 2: mars bar: score <total score 2> = bar * 2.0 * <other scoring terms>
Из чего видно, что food
соответствует коэффициенту усиления 3.0
, bars
и bar
соответствуюткоэффициент усиления 2.0
.Поддерживая поисковый словарь, для которого термин имел какой импульс для начала, легко определить, какие термины совпадают.
Два фактора, которые следует учитывать:
- Если коэффициент повышения равен
1.0
, оценка отладки solr не печатает его. - Solr может включать некоторый коэффициент усиления по умолчанию для термина на основе нечеткого сопоставления, TF-IDF и т. Д. В этом случае отображаемый коэффициент усиления не будетсопоставлять с бустами, которые мы указали в запросе.По этой причине нам нужно выполнить наш запрос дважды - один раз без какого-либо повышения (чтобы понять повышение по умолчанию для каждого термина) и один раз с повышением (чтобы увидеть, насколько он изменился сейчас).
Надеюсь, это кому-нибудь поможет.