欢迎投稿

今日深度:

solr 学习,

solr 学习,


最近在做solr查询 遇到这样的场景 按照title keywords publishtTime三个字段查询。如果单纯的titile和keywords还好办。直接设置pf title keywords 和qf title^0.6 keywords^0.4 就行了 这句话意思是titile诚意0.6计算的权重 加上keywords乘以0.4的值 然后相加获得中的权重,然后计算出评分 把获得的结果按照评分从高到底一次排列。

现在遇到一个问题 就是time这个评分要怎么计算

查了下网上资料 两个函数一个ms() 一个rord 还有一个recip

用法

bf

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

sqrt(log(ms(publishTime)))

这里要说明的是bf接受的参数要么是时间 要么是数字  刚开始写的时候拿字符串去算 然后就呵呵了。

先解释下ms函数

api 这样描述 Returns milliseconds of difference between it's arguments.

ms有三种形式ms(),ms(a),ms(a,b);

ms()标示当前时间和1970年之间的毫秒值

ms(2000-01-01T00:00:00Z)表示 2000年和 1970年之间的毫秒值。

ms(a,b)表示两个时间之间的毫秒值

例如ms(NOW,publishTime) 就是现在时间 减去发布时间 的毫秒值。注意publishTime只能是过去的时间。。如果是将来 这个时间可能会不行

另外 在查询过程中遇到了下边现象

"publishTime": "2014-11-20T02:48:38Z", "ms(publishTime )": "2014-11-20T02:48:38Z"

ms(publishTime )的值不是数字 

造成的原因很可能是publishTIme的字段类型不是date 二十tdate的原因

www.htsjk.Com true http://www.htsjk.com/solr/38869.html NewsArticle solr 学习, 最近在做solr查询 遇到这样的场景 按照title keywords publishtTime三个字段查询。如果单纯的titile和keywords还好办。直接设置pf title keywords 和qf title^0.6 keywords^0.4 就行了 这句话意思...
相关文章
    暂无相关文章
评论暂时关闭