solr6高亮solrj設置

来源:互联网 发布:程序员开发手册 编辑:程序博客网 时间:2024/06/05 17:29
public SolrDocumentList query(String queryText) {  
           
        SolrQuery query = new SolrQuery(queryText);  
        //设置高亮,以下两种方式都行(相当于开启高亮功能)  
        //query.setHighlight(true);  
        query.setParam("hl", "true"); //highlighting  
        //设置高亮显示的请求,高亮显示的内容由该参数决定,但是返回结果还是由SolrQuery决定  
        //query.setParam("hl.q", "email:zhang@ppstream.com");  
        /*
        * 那些字段高亮显示,可以用空格或者逗号分隔(有一个域的时候正常,两个及以上没测试通过)
          
        * 老版本使用query.addHighlightField("name");query.addHighlightField("description");给多个字段开启高亮功能
          
        */  
        query.setParam("hl.fl", "titlename");  
        //高亮显示字段前后添加html代码  
        query.setHighlightSimplePre("<font color=\"red\">");   
          
        query.setHighlightSimplePost("</font>");  
           
        SolrDocumentList list = new SolrDocumentList();  
           
        SolrDocument document = null;  
           
        QueryResponse response;
        try {
            response = httpSolrServer().query(query);
            SolrDocumentList documents = response.getResults();  
               
            //第一个Map的键是文档的ID,第二个Map的键是高亮显示的字段名  
               
            Map<String, Map<String, List<String>>> map = response.getHighlighting();
            for(int i=0;i<documents.size();i++) {  
                   
                document = documents.get(i);  
                   
                document.setField("titlename", map.get(document.getFieldValue("id")).get("titlename"));  
                   
                /*document.setField("email", map.get(document.getFieldValue("id")).get("email"));*/  
                   
                list.add(document);  
                   
                }
        } catch (SolrServerException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }  
           
        return list;  
           
        } 
0 0
原创粉丝点击