在做一个电商搜索,现在要求:
搜索一个关键词组(比如“ 手机 华为”)后,命中条件都差不多的情况下。优先返回有货的记录,没货的记录排在有货的后面。
如下配配置solrconfig.xml如下。现在的问题是,product函数给多大了(9999),不相关的货物,比如衣服。因为有货,直接跑到前面。但是如果给小了,(比如1),出来的都是结果都是对,但是有货的可能还是排在后面。有没有别的办法实现。
<requestHandler name="/select" class="solr.SearchHandler">
<!-- default values for query parameters can be specified, these
will be overridden by parameters in the request
-->
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<str name="defType">edismax</str>
<str name="bf">
sum(div(buynum,10000),product(max(map(enable_store,1,10000,1),0),9999))
</str>
<str name="pf">
all_info(goodsName+sn+brand_name)
</str>
<str name="qf">
goodsName^5(货物名)
sn^3(编号)
brand_name^2(品牌类别)
all_info^1
</str>