1

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

问题是当我使用时:

$enquire->set_sort_by_value_then_relevance(1);

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

$enquire->set_sort_by_relevance();

Xapian 将仅按相关性排序。

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

我可以用 Xapian 做这个吗?

谢谢

4

1 回答 1

-1

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

您应该阅读有关 PostingSources的介绍,其中包括一个示例(在 Python 中),该示例非常接近您想要在此处执行的操作。(如果你重写 WeightSource 类以从 get_weight() 返回文档值,并为 get_maxweight() 提供合适的实现,你会得到你想要的。)

我从来没有在 PHP 中这样做过,但据我所知,它应该可以工作——所以如果没有,那将被认为是一个错误,你应该报告它。

于 2012-10-01T16:19:01.287 回答