[solr ] Solr 多字段匹配,需求不同字段优先顺序不同
mryk2012
2016-05-16
比如最简单的博客模型,只有文章标题title,和文章内容content加入solr
以“test”作为搜索词,已知title包含'test'的有10个,content包含‘test’的有50个 需要搜索结果,title包含的10个排在前面,content包含的50个排在后面,而他们 分别再按间时排序进行排序,这个不知道如何解决。 也看了edismax, 设置qf 和 bf 权重, qf=title^5 content^1 bf=div(time,100000000)//根据时间降序排 但是还不能满足上面的需求,有知道如何解决这个问题的朋友吗,求给点提示 |
|
冰糖葫芦
2016-05-28
根据你的问题,可以用这个bf,
String term = “test”; String bf = "sum(" + “product(“ + "if(exists(query({!v=’title:” + term + "'})),100000,0)," + "div(time,100000000)" + ")," + “product(“ + "if(exists(query({!v=‘content:” + term + “’})),1,0),” + "div(time,100000000)" + ")" + “)”; 思路就是让title中包含关键词的doc分数设置很大(然后这样就可以把title包含的排前),而product函数则保障tile按时间倒序、content按时间倒序。 有问题可以联系我 |