欢迎投稿

今日深度:

solr权重,

solr权重,


目前影响solr查询返回结果默认是采用score进行排序的,如何影响文章静态score权重值,主要有三种方案:

1. 通过solrConfig.xml进行指定配置

<requestHandler name="select" class="solr.SearchHandler" default="true">
    <!– 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>
        <bool name="hl">true</bool> 
        <str name="hl.fl">title,content</str>  
       <str name="f.content.hl.fragsize">200</str>
       <str name="mlt.qf">
           id^10.0 title^10.0 content^1.0
        </str>
     </lst>
</requestHandler>

2. 通过SolrJ在索引阶段赋值静态权重

  对文档某个字段指定相应的权重,其中attrName为属性名称,attr为具体的内容,5.0f为对应指定的权重值(默认为1分)

  doc.setField(attrName, attr.trim()5.0f);

  对整个文档赋boost值

  doc.setDocumentBoost(1.5f);

3. 通过SolrJ在搜索阶段赋权重查询

  今天我讲的是第二种方式,虽然第一种方式也可以实现权重指定,但是是写死的不能进行动态化的调整,而且solrConfig.xml文件为solr最底层配置文件,如果已经大规模使用的话再想修改就不是那么简单的事情了(严重导致集群发生STW即Stop The World),所以推荐第二种方式实现,索引数据这里就不多余介绍了,到这一步的话前面的应该都不是问题了,那么我直接上代码来介绍如何通过代码指定对应属性的权重:

 1 SolrQuery query = new SolrQuery("*:*"); 
 2 query.set("df", "title");
 3 query.set("defType","dismax");  
 4 query.set("qf","title^1 price^0.1");//这里必须包含查询条件title
 5 query.set("bf", "sum(abs(price))");
 6 query.setParam("q.op", "AND");
 7 query.addSort("pubTime", ORDER.desc);  
 8 query.setStart(0);
 9 query.setRows(10);
10 QueryResponse queryReponse;  
11 try {  
12     SolrInputDocument doc = new SolrInputDocument();   
13     queryReponse = solrServer.query(sq);  
14     SolrDocumentList doclist=sr.getResults();   
15      //计数器  
16      int i=0;  
17     for (SolrDocument solrDocument : doclist) {
18         System.out.println("标题:"+solrDocument.get("title")+"\n\n");  
19          ++i;  
20     }  
21     System.out.println(i+"个");  
22 } catch (SolrServerException e) {  
23     e.printStackTrace();  
24 }  

  以下是没有权重排序的结果:

标题:一0  
标题:一1  
标题:一2  
标题:一3  
标题:一4  
5个

  以下是引入权重排序结果:

标题:一4  
标题:一3  
标题:一2  
标题:一1  
标题:一0  
5个 

www.htsjk.Com true http://www.htsjk.com/solr/39118.html NewsArticle solr权重, 目前影响solr查询返回结果默认是采用score进行排序的,如何影响文章静态score权重值,主要有三种方案: 1. 通过solrConfig.xml进行指定配置 requestHandler name ="select" class ="solr.Sea...
相关文章
    暂无相关文章
评论暂时关闭