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只是个例子(可以自行调整),表示让完全匹配的字段得分很大很大,这样分数最大,就自然而然排最前边了 |