Как я могу отсортировать по релевантности и значению одновременно, используя Xapian? В PHP
У меня есть индекс в Xapian, и у каждого документа есть значение (dinstinct), которое я хочу использовать при сортировке.
Проблема в том, что когда я использую:
$enquire->set_sort_by_value_then_relevance(1);
Xapian будет сортировать только по значению или, если я использую:
$enquire->set_sort_by_relevance();
Xapian будет сортировать только по релевантности.
Я хочу отсортировать по релевантности 50% + 50% стоимости, смешивая этот тип сортировок, а не один за другим.
Могу ли я сделать это с Xapian?
Спасибо
1 ответ
Для решения этой проблемы вам нужно использовать PostingSource, чтобы влиять на вес документа, который подается в алгоритм ранжирования Xapian. Если ваш PostingSource использует весовые коэффициенты из значения документа, то они будут учитываться наряду с вероятностной релевантностью в окончательных весовых коэффициентах и порядке.
Есть введение в PostingSources, которое вы должны прочитать, которое включает пример (на Python), который довольно близко подходит к тому, что вы хотите сделать здесь. (Если вы переписали класс WeightSource для возврата значения документа из get_weight () и нашли подходящую реализацию для get_maxweight(), вы получите то, что вы хотите.)
Я никогда не делал этого в PHP, но, как я понимаю, что это должно работать - так что если это не так, это будет считаться ошибкой, и вы должны сообщить об этом.