Как я могу отсортировать по релевантности и значению одновременно, используя 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, но, как я понимаю, что это должно работать - так что если это не так, это будет считаться ошибкой, и вы должны сообщить об этом.

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