使用SolrJ操作Solr7.4

SolrJ操作Solr很简单,一看就懂,我就不用多说
引入依赖

    <dependency>
      <groupId>org.apache.solr</groupId>
      <artifactId>solr-solrj</artifactId>
      <version>7.4.0</version>
    </dependency>

测试solrJ的添加功能,注意Solr5之后创建HttpSolrClient使用的是Builder模式,创建时还可以设置延时时间


        final String solrUrl = "http://localhost:8983/solr/lhc_core";
        HttpSolrClient solrServer = new HttpSolrClient.Builder(solrUrl)
            .withConnectionTimeout(10000)
            .withSocketTimeout(60000)
            .build();
        SolrInputDocument document = new SolrInputDocument();
        // 注意:id的域不能少
        document.addField("id", "c0002");
        document.addField("title_ik", "使用solrJ添加的文档");
        document.addField("content_ik", "solrj文档的内容");
        document.addField("product_name", "solrJ商品名称");
        solrServer.add(document);
        solrServer.commit();

测试Solr的删除功能,根据ID删除


  final String solrUrl = "http://localhost:8983/solr/lhc_core";
        HttpSolrClient solrServer = new HttpSolrClient.Builder(solrUrl)
            .withConnectionTimeout(10000)
            .withSocketTimeout(60000)
            .build();
        solrServer.deleteById("c0001");
        //提交
        solrServer.commit();

测试SolrJ的简单查询

  final String solrUrl = "http://localhost:8983/solr/lhc_core";
        HttpSolrClient solrServer = new HttpSolrClient.Builder(solrUrl)
            .withConnectionTimeout(10000)
            .withSocketTimeout(60000)
            .build();
        SolrQuery query = new SolrQuery();
        query.set("q", "id:c0001");
        // 调用server的查询方法,查询索引库
        QueryResponse response = solrServer.query(query);
        // 查询结果
        SolrDocumentList results = response.getResults();
        // 查询结果总数
        long cnt = results.getNumFound();
        System.out.println("查询结果总数:" + cnt);
        for (SolrDocument solrDocument : results) {
            System.out.println(solrDocument.get("id"));
            System.out.println(solrDocument.get("title_ik"));
            System.out.println(solrDocument.get("content_ik"));
            System.out.println(solrDocument.get("product_name"));
        }

我们在浏览器中看到的搜索关键字的字体都有样式,这也不难,下面举例演示

  final String solrUrl = "http://localhost:8983/solr/lhc_core";
        HttpSolrClient solrServer = new HttpSolrClient.Builder(solrUrl)
            .withConnectionTimeout(10000)
            .withSocketTimeout(60000)
            .build();
        SolrQuery query = new SolrQuery();
        query.setQuery("solrJ");
        // 设置过滤条件
        query.setFilterQueries("product_name:solrJ商品名称");
        // 设置排序
        query.setSort("id",SolrQuery.ORDER.desc);
        // 设置分页信息
        query.setStart(0);
        query.setRows(10);
        // 设置显得的域的列表
        query.setFields("id", "title_ik", "content_ik","product_name");
        // 设置默认搜索域
        query.set("df", "product_name");
        // 设置高亮
        query.setHighlight(true);
        query.addHighlightField("product_name");
        query.setHighlightSimplePre("<em>");
        query.setHighlightSimplePost("</em>");

        // 调用server的查询方法,查询索引库
        QueryResponse response = solrServer.query(query);

        // 查询结果
        SolrDocumentList results = response.getResults();

        // 查询结果总数
        long cnt = results.getNumFound();
        System.out.println("查询结果总数:" + cnt);

        for (SolrDocument solrDocument : results) {

            System.out.println(solrDocument.get("id"));
            //Highlighting 再通过id查询出数据,再从数据中获取属性,但默认返回的是一个list,那就取第一个
            System.out.println( response.getHighlighting().get(solrDocument.get("id")).get("product_name").get(0));
            System.out.println(solrDocument.get("title_ik"));
            System.out.println(solrDocument.get("content_ik"));
        }
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值