使用较新日期推广商品的正确方法是什么?

时间:2012-04-18 01:55:57

标签: solr full-text-search morelikethis

我有一个更喜欢这个查询,我想先更新它以返回更新的文档。根据文档,我需要在查询中添加recip(ms(NOW,mydatefield),3.16e-11,1,1)

但是当我尝试将其添加到mlt.qf或bf参数中时。结果保持不变。

这是我的疑问:

  

/ solr的/ MLT?

     

Q = ID:cms.article.137861

     

&安培; DEFTYPE = edismax

     

&安培;行= 3

     

&安培;缩进=上

     

&安培; mlt.fl = series_id,标记,标题,文本

     

& mlt.qf = show_id text ^ 1.1 title ^ 1.1 tags ^ 90

     

&安培;重量= JSON

     

&安培; FL = URL,标题,标签,django_id,content_type_id

     

&安培; BF = RECIP(MS(NOW,PUB_DATE),3.16e-11,1,1)

2 个答案:

答案 0 :(得分:1)

这是从solr wiki中获取的(它已关闭,但我已将其缓存) 我认为这就是你要找的东西。

如何提高新文件的得分

按日期进行显式排序(忽略相关性分数) 使用较大文档的索引时间提升 使用FunctionQuery根据日期字段影响分数。 在Solr 1.3中,使用表格recip(rord(myfield),1,1000,1000) 在Solr 1.4中,使用表格recip(ms(NOW,mydatefield),3.16e-11,1,1) http://lucene.apache.org/solr/api/org/apache/solr/search/function/ReciprocalFloatFunction.html http://lucene.apache.org/solr/api/org/apache/solr/search/BoostQParserPlugin.html 对于“ipod”的查询的完整示例,得分越高,产品越新:

http://localhost:8983/solr/select?q= {!boost b = recip(ms(NOW,manufacturedate_dt),3.16e-11,1,1)} ipod 可以通过将查询分解为多个参数来简化实现:

http://localhost:8983/solr/select?q= {!boost b = $ dateboost v = $ qq}& dateboost = recip(ms(NOW,manufacturedate_dt),3.16e-11,1,1)& qq = ipod 现在主要的“q”参数以及“dateboost”参数可以在solrconfig.xml中的搜索处理程序中指定为默认值,而客户端只需要传递用户查询“qq”。

为了增强另一种查询类型,例如dismax查询,boost查询的值是一个完整的子查询,因此可以使用{!querytype}语法。或者,可以在boost local params中使用defType参数将默认类型设置为dismax。其他dismax参数可以设置为顶级参数。

http://localhost:8983/solr/select?q= {!boost b = $ dateboost v = $ qq defType = dismax}& dateboost = recip(ms(NOW,manufacturedate_dt),3.16e-11,1,1)& qf = text& ; PF =文本&安培; QQ = iPod的 考虑使用降低的精度来防止过多的内存消耗。你会改为使用recip(ms(NOW / HOUR,mydatefield),3.16e-11,1,1)。有关详细信息,请参阅此主题。

答案 1 :(得分:0)

显然你的日期字段不是TrieDate