我有一个更喜欢这个查询,我想先更新它以返回更新的文档。根据文档,我需要在查询中添加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)
答案 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