[solr ] 搜索完成后,有货的怎么排在没货的前面

abcd_sanbian 2016-09-23

 在做一个电商搜索,现在要求:

搜索一个关键词组(比如“ 手机  华为”)后,命中条件都差不多的情况下。优先返回有货的记录,没货的记录排在有货的后面。

如下配配置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>

 

 

冰糖葫芦 2016-11-28
你好,你的情况其实有一种非常简单的解决方法,就是增加一个字段比如has_goods(有货:1,无货:0),这在只需要把你的bf调整为:
product(你原来的bf表达式,has_goods)
即可

简单解释下:
就是有货的时候使用你原来的bf表达式所得分数,否则人工干预分数为0
Global site tag (gtag.js) - Google Analytics