如何使用Xapian同时按相关性和价值进行排序?在PHP中

时间:2012-09-17 11:00:48

标签: php indexing xapian

我在Xapian中有一个索引,每个doc都有一个我想在排序时使用的值(dinstinct)。

问题在于我使用时:

$enquire->set_sort_by_value_then_relevance(1);

Xapian将仅按值排序 或者如果我使用:

$enquire->set_sort_by_relevance();

Xapian只会根据相关性进行排序。

我想按50%的相关性+ 50%的价值排序,混合这种类型,而不是一个接一个。

我可以用Xapian制作吗?

谢谢

1 个答案:

答案 0 :(得分:0)

对于这类问题,您需要做的是使用PostingSource来影响提供给Xapian排名算法的文档权重。如果您的PostingSource使用文档值中的权重,那么这些权重将与最终权重和排序中的概率相关性一起考虑。

您应该阅读an introduction to PostingSources,其中包含一个示例(在Python中),它非常接近您想要在此处执行的操作。 (如果您重写了WeightSource类以从get_weight()返回文档值,并为get_maxweight()提供了合适的实现,那么您将获得所需的内容。)

我从来没有在PHP中做到这一点,但是因为我理解它应该工作的东西 - 所以如果它没有,那将被视为一个错误,你应该报告它。