2015-03-31 89 views
1

所有:如何降低助推术语dismax

我想要做的是高得分具有“季节”,在内容领域和严惩用“季节”的文件在Title字段,提振文件新创建的文件。

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

回答

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是包含创建或更新文档时的时间戳字段。

上的升压功能的使用的更多细节,可以发现here

+0

谢谢,我对q和bq有点困惑,[1]这是否意味着我只需要指定我想在bq中搜索和提升的内容,而不必关心q内部的内容? [2]如何通过给予负面提振来惩罚文件? – Kuan 2015-04-02 17:09:34

+0

[1]是q参数用于常规关键字搜索,bq用作适用于所有搜索的提升查询。 [2]给你一个负面提升的条件提供一个较低的提升值会降低匹配这个条件的文档的得分。在上面的示例中,.001的提升会降低包含季节标题的文档的得分。 – 2015-04-02 18:04:30

+0

谢谢,我会试试看看我能否弄清楚。 – Kuan 2015-04-02 18:10:21

0

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

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

对于助推新创建的文档,你还需要指定在一个旧文件具有基于搜索标准更高的分数会发生什么。如果你的意思是,在同等分数的情况下,新文件应高于再加入

sort=score desc,created_at desc 

到您的查询,假设你是存储在插入时间下一个字段名“created_at”。

0

在DisMax,您可以通过使用减少的是在该领域有标题“季节”的word文档相关性得分:

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

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

上面的代码是yaml格式,用于VuFind中的相关设置。