Solr学习

Solr6.4.2查询&高亮

2017-03-13  本文已影响2303人  小乖心塞

查询web界面如下:

solr_Query界面

基本查询配置

Solr的检索运算符

高亮

通过solrj 的方式获取高亮

public  static  void queryHighlighter(String kw){
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setQuery("content:"+kw); //设置查询关键字
        solrQuery.setHighlight(true); //开启高亮
        solrQuery.addHighlightField("content"); //高亮字段
        solrQuery.setHighlightSimplePre("<font color='red'>"); //高亮单词的前缀
        solrQuery.setHighlightSimplePost("</font>"); //高亮单词的后缀
        solrQuery.setHighlightFragsize(1);
        /**
        hl.snippets
        hl.snippets参数是返回高亮摘要的段数,因为我们的文本一般都比较长,含有搜索关键字的地方有多处,如果hl.snippets的值大于1的话,
         会返回多个摘要信息,即文本中含有关键字的几段话,默认值为1,返回含关键字最多的一段描述。solr会对多个段进行排序。
        hl.fragsize
        hl.fragsize参数是摘要信息的长度。默认值是100,这个长度是出现关键字的位置向前移6个字符,再往后100个字符,取这一段文本。*/

        solrQuery.setHighlightFragsize(15);

        try {
            QueryResponse query = solrServer.query(solrQuery);
            SolrDocumentList results = query.getResults();
            NamedList<Object> response = query.getResponse();
            NamedList highlighting = (NamedList) response.get("highlighting");
            for (int i = 0; i <highlighting.size() ; i++) {
                System.out.println(highlighting.getName(i)+":"+highlighting.getVal(i));
            }



            for (SolrDocument result : results) {
                System.out.println(result.toString());
            }

        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


    }
执行结果
上一篇 下一篇

猜你喜欢

热点阅读