solr排序问题

SangBillLee 2016-10-28
有个solr排序问题问下,场景如下:
有个实体类:
A{
   id,
   a1,
   a2,
   fullText:a1+" "+a2
}
比如往solr更新索引,数据如下:
(1,"中华人民","很好","中华人民 很好")
(2,"中华人民","勤劳","中华人民 勤劳")
(3,"中华人民共和国","很好","中华人民共和国 很好")
(4,"中华人民共和国","勤劳","中华人民共和国 勤劳")

现在查询:fullText:中华人民,
但是返回结果并没有按最匹配排序,比如结果为:
中华人民 很好
中华人民共和国 很好
中华人民共和国 勤劳
中华人民 勤劳

我用了ik分词,并且字典里面,中华人民,中华人民共和国都是完整关键词。
我想得到结果是:
中华人民 很好
中华人民 勤劳
中华人民共和国 很好
中华人民共和国 勤劳,
应该如何做?
冰糖葫芦 2016-11-28
你好,这个问题是因为solr对“中华人民共和国 很好”等得综合打分大于“中华人民 勤劳 ”这条数据,所以排后边去了;所以解决办法就是提高完全匹配数据的得分(因为其他方式会导致你cpu100%以上),所以不建议用sort的方式

而从你的问题中我猜你“"中华人民"”这一列是一个单独的字段,这种情况下,新增加一个字段比如title_str,类型设置为string类型(注意这个很重要,因为string不分词,所以可以高效判断是否完全匹配),然后通过bf:
if(exists(query({!v='title_str:中华人民'})),10000000000,0)
注意,我这里的10000000000只是个例子(可以自行调整),表示让完全匹配的字段得分很大很大,这样分数最大,就自然而然排最前边了
Global site tag (gtag.js) - Google Analytics