solr的ExternalFileField

ExternalFileField是一种非常灵活的定义排序的一种字段,适用于一些需要临时提高某些doc的排名,但是又不想显式的把评分建立到索引里面,这种需求,在电商的业务里面,经常会遇到一些特定的节日进行商品大促,需要临时提高一批索引数据的排名,而又不想重建整个索引,在大促结束后,这些排名又恢复正常,这种场景下非常适合使用ExternalFileField来解决,与竞价排名非常类似。

ExternalFileField这种字段不能够被搜索,但可以用来结合函数查询和评分排序,下面介绍下用法:
字段定义

Java代码 复制代码  收藏代码
  1. <field name="rank" type="idRank" indexed="false" stored="false" />  
<field name="rank" type="idRank" indexed="false" stored="false" />


字段类型的定义

Java代码 复制代码  收藏代码
  1. <fieldType name="idRank" keyField="anyCpyNo" defVal="0" stored="true" indexed="true" class="solr.ExternalFileField" valType="float"/>  
<fieldType name="idRank" keyField="anyCpyNo" defVal="0" stored="true" indexed="true" class="solr.ExternalFileField" valType="float"/>


定义的评分文件名组成规则:external_字段名.*    (*号代表可以是一组数字或字母,solr会自动排序取最后一个的文件为有效评分文件,原来的文件删除)

本例中名称为:external_rank.0
数据:



加载位置位于solr-5.1.0\server\solr\core\data\下面


解释:
name是字段类型的标识
keyField是当前scheam的里面的唯一主键字段
defVal为默认值
valType为数据类型目前仅支持pfloat,float,tfloat
搜索效果如下:




ok,此时效果已经可以表现出来了,如果改动完成之后,在下一次commit之后,新增的分数会自动生效,无须重启服务!

猜你喜欢

转载自weitao1026.iteye.com/blog/2266865