0

我是 solr 的新手,请帮助我提升领域。

我有一个这样的查询,

q=name:test* OR description:test*

我想应用提升/体重年龄来命名它的 500 和描述它的 50。

例如:让我们考虑“测试”术语在一条记录的名称字段中出现 1 次,在另一条记录的描述字段中出现 20 次,那么提升计算应该如下所示。

名称:1 X 500 = 500

用于说明:20 X 50 = 1000。

因此,具有高提升价值的记录应该排在首位。因此,根据上述计算,在名称字段中有 1 个匹配项的记录之后,具有 20 个匹配项的描述字段的记录应该排在首位。

如果有人对此有解决方案,请提供

提前致谢。

4

1 回答 1

0

您可以在索引时使用boost 属性来提升字段,或者您可以在查询中应用提升,例如q=name:test*^50 OR description:test*(这里也有一些更高级的功能)。

不过我需要注意的是,Lucene 默认情况下会应用长度归一化,它有效地对较短字段的匹配进行加权,而不是较长字段。这听起来有点像你正在尝试重新创建的东西。

如果您需要评分计算与您提供的一样简单,我相信您需要编写自己的Similarity 类。

于 2014-01-22T22:35:22.477 回答