Solr QueryElevationComponent--实现竞价排名
在很多搜索网站上都有这样的一个功能,就是竞价排名,绑定某个关键字,给钱了那我给你排前面。
包括很多视频网站的一些站内搜索功能也有这样的需求;
最近在看solr官网,solr的查询功能中就包含了这一功能。参考地址如下:
https://wiki.apache.org/solr/QueryElevationComponent#elevateIds.2FexcludeIds
下面这个网址包含了solr所有功能;对solr感兴趣的可以收藏下!
https://cwiki.apache.org/confluence/display/solr/Spell+Checking
那么接下来我们来实现我们的功能把。
solrconfig.xml
config-file:elevate.xml,这个文件solr默认已经存在,需要自己配置;默认跟solrconfig.xml同一目录,如无特殊要求可不做修改
searchComponent的name属性是和requestHandler有一个绑定关系的,大家注意一下;
还有就是,requestHandler定义的名称/elevate是我们后面需要用到的节点名,就像selelct一样。使用这一功能的时候把select换成elevate。
requestHandler标签中的defaults-->df是定义了你要做竞价排名,或者说人工干预的查询字段;如果此处不指定的话,需要在查询的时候指定;
如果不配置默认为false,即不排除!
接下来我们查询下看看。这里先看下正常的查询结果。这里我们把enableElevation设置为false即可
接下来我们把enableElevation设置为true,查询做下对比
http://localhost:8081/solr/collection1/elevate?q=isle&enableElevation=true&forceElevation=true
查询结果如下:’
可以看到docID为6493的文档被提到最前。而docID为3971的文档被剔除结果集。