1

全部:

我想要做的是对内容字段中具有“季节”的文档进行高分,并在标题字段中严厉惩罚具有“季节”的文档并提升新创建的文档。

我想知道如何在 Dismax(或 eDismax)中做到这一点?谢谢

4

3 回答 3

1

提升 qf 参数将提升字段,而不管字段中的值如何。为了提升内容字段中包含关键字“season”的文档,请改用“bq”参数。例如。

select?q=*&bq=content:season^50&bq=title:season^0.001

要提升新创建的文档,请使用提升功能,例如

recip(ms(NOW,mydatefield),3.16e-11,1,1)

其中 mydatefield 是包含文档创建或更新时间的时间戳的字段。

更多关于使用 boost 函数的细节可以在这里找到

于 2015-04-02T15:16:48.720 回答
0

使用 dismax(或 edismax)查询解析器时,查询字段在 qf 参数下指定,并且也应用了提升。例如,在您的情况下:

select?q=season&qf=content^1000 title^0.001&defType=dismax

为了提升新创建的文档,您还需要根据搜索条件指定当旧文档具有更高分数时会发生什么。如果您的意思是在相同分数的情况下,新文档应该在上面然后添加

sort=score desc,created_at desc

到您的查询,假设您将插入时间存储在字段名称“created_at”下。

于 2015-04-02T11:22:58.960 回答
0

在 DisMax 中,您可以使用以下方法降低字段标题中包含“season”一词的文档的相关性分数:

    - ['bf', "if(tf(title,'season'),-5,0)"]

例子。如果没有 bf 相关性提升的文档的相关性得分为 5.6,并且文档在标题字段中有单词内容,则应用 bf 后文档的相关性得分将为 5.1,因为 Solr 将 -5 乘以queryNorm(对于结果中的所有文档都是常数设置,并且不影响其顺序)在将产品添加到相关性分数之前。对于这个例子,我们假设 queryNorm = 0.1 所以 5.6 - (5 * 0.1) 得到 5.1。

以上代码为yaml格式,用于VuFind中的相关性设置。

于 2016-01-07T12:06:56.620 回答