需求:
对这个字段进行完全匹配 的排序进行加权
<field name="keyword_vague" type="text_ansj" multiValued="true" indexed="true" stored="true"/>
公式:
sum(sum(product(product(div(log(sum(bidding_price,10)),7),0.15),9),product(product(div(log(sum(daily_quota,10)),7),0.15),0.3),product(product(div(log(sum(budget,10)),7),0.15),0.3),product(product(div(log(sum(budget_left,10)),7),0.15),0.4)),if(exists(query({!v=keyword_vague:品牌设计全案})),100,0)) desc
sc:公式得分
但是可以看到对这种分词的字段,solr将关键词分词后与之匹配,部分匹配并不是我们想要的
再看看公式:if(exists(query({!v=keyword_vague:品牌设计全案})),100,0)
我想的是将“品牌设计全案” 完全匹配的加权100
结果“品牌设计”部分匹配也加权
解决方案:
将关键词加引号
sum(sum(product(product(div(log(sum(bidding_price,10)),7),0.15),9),product(product(div(log(sum(daily_quota,10)),7),0.15),0.3),product(product(div(log(sum(budget,10)),7),0.15),0.3),product(product(div(log(sum(budget_left,10)),7),0.15),0.4)),if(exists(query({!v=keyword_vague:“品牌设计全案”})),100,0)) desc