solr 分页查询与高亮显示

2019-03-06 23:33|来源: 网路

1、分页查询

分页查询的时候,只对添加start和rows两个参数即可

@Test
public void testFind() throws SolrServerException {
    // 以后参数都是通过这个对象去构造...
    SolrQuery solrParams = new SolrQuery();
    solrParams.setQuery("name:书生");
    //分页
    solrParams.setStart(20);
    solrParams.setRows(10);
    QueryResponse queryResponse = solr.query(solrParams);
    // 返回结果,默认只返回10条记录
    SolrDocumentList documentList = queryResponse.getResults();
    for (SolrDocument solrDocument : documentList) {
        Object id = solrDocument.get("id");
        Object name = solrDocument.get("name");
        System.out.println(id);
        System.out.println(name);
    }
}


2、高亮显示
查询参数设置 setHighlight为true,开启高亮显示
查询参数中设置h ighlightSimplePre和highlightSimplePost对高亮结果进行处理,例如添加html标签方便页面高亮显示

对某个字段进行高亮,还要设置参数hl.fl为指定字段,如solrParams.setParam("hl.fl", "content");

可以通过queryResponse.getHighlighting只获取高亮的数据


@Test
public void testHighlight() throws SolrServerException{
    //以后参数都是通过这个对象去构造...
    SolrQuery solrParams=new SolrQuery();
    solrParams.setQuery("name:书生");
    //开启高亮
    solrParams.setHighlight(true);
    //高亮显示的格式
    solrParams.setHighlightSimplePre("<font color='red'>");
    solrParams.setHighlightSimplePost("</font>");
    //我需要那几个字段进行高亮
    solrParams.setParam("hl.fl", "content");
    QueryResponse queryResponse=solr.query(solrParams);
    //返回所有的结果...
    SolrDocumentList documentList=queryResponse.getResults();
    Map<String, Map<String, List<String>>> maplist=queryResponse.getHighlighting();
    //返回高亮之后的结果..
    for(SolrDocument solrDocument:documentList){
        Object id=solrDocument.get("id");
        Map<String, List<String>>  fieldMap=maplist.get(id);
        List<String> stringlist=fieldMap.get("content");
        System.out.println(stringlist);
    }
}


执行结果:

[<font color='red'>书</font><font color='red'>生</font>在学solr2]
[<font color='red'>书</font><font color='red'>生</font>在学solr3]
[<font color='red'>书</font><font color='red'>生</font>在学solr4]
[<font color='red'>书</font><font color='red'>生</font>在学solr5]
[<font color='red'>书</font><font color='red'>生</font>在学solr6]
[<font color='red'>书</font><font color='red'>生</font>在学solr7]
[<font color='red'>书</font><font color='red'>生</font>在学solr8]
[<font color='red'>书</font><font color='red'>生</font>在学solr9]
[<font color='red'>书</font><font color='red'>生</font>在学solr10]
[<font color='red'>书</font><font color='red'>生</font>在学solr11]


注:由于我使用默认分词器,所以对中文分词不太好


相关问答

更多

为什么solr6.0以后的版本,无法引入org.apache.solr.client.solrj.impl.HttpSolrClient类

Solrj是Solr搜索服务器的一个比较基础的客户端工具,可以非常方便地与Solr搜索服务器进行交互。最基本的功能就是管理Solr索引,包括添加、更新、删除和查询等。 对于一些比较基础的应用,用Solj基本够用,而且你可以非常容易地通过使用Solrj的API实现与Solr搜索服务器进行交互,实现对Solr的基本管理功能。 如果你的应用比较复杂,可以扩展Solrj来满足需要。

有solr为什么还要使用数据库

solr不安全,没事务 ,没有表关系

Java框架solr用哪个版本的好?

solr-4.10.2,当下几个出名的分词器IKAnalyzer已支持该版本。现在开发的产品需要使用搜索功能,lucene是首选,于是再度研究了一翻,没有多大难度。同时也不在直接使用lucene库,而是使用solr,大大简化了创建索引与查询索引的难度。solr这种分布式索引方式对性能的控制更加有把握,因为它支持多核、复制功能,我们还可以写代码实现读写分离等性能扩展功能。itJob

在myeclipse中使用solr需要哪些jar包

是Solr搜索服务器的一个比较基础的客户端工具,可以非常方便地与Solr搜索服务器进行交互。 最基本的功能就是管理Solr索引,包括添加、更新、删除和查询等。 对于一些比较基础的应用,用Solj基本够用,而且你可以非常容易地通过使用Solrj的API实现与Solr搜索服务器进行交互,实现对Solr的基本管理功能。 如果你的应用比较复杂,可以扩展Solrj来满足需要。

为什么solr6.0以后的版本,无法引入org.apache.solr.client.solrj.impl.HttpSolrClient类

Solrj是Solr搜索服务器的一个比较基础的客户端工具,可以非常方便地与Solr搜索服务器进行交互。最基本的功能就是管理Solr索引,包括添加、更新、删除和查询等。 对于一些比较基础的应用,用Solj基本够用,而且你可以非常容易地通过使用Solrj的API实现与Solr搜索服务器进行交互,实现对Solr的基本管理功能。 如果你的应用比较复杂,可以扩展Solrj来满足需要。

相关文章

更多

最近更新

更多