使用SolrJ操作Solr增删改查,太简单了

一、SolrJ是什么? 

​ SolrJ是Solr提供的Java客户端API。通过SolrJ可以实现Java程序对Solr中数据的操作。

​ 大前提:添加SolrJ依赖。依赖版本和Solr版本严格对应

我用的版本:根据自己的solr版本对应

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

二、测试

1.导入依赖


2.编写代码

1.新增修改实现:代码如下

新增修改语法一样,新增的id如果已存在该id,那就会修改也存在的id,如果不存在就新增

    @Test
    public void testAdd() throws Exception {
        //Solr地址
        String url = "http://192.168.0.107:8983/solr/testcore";
        HttpSolrClient solrClient = null;
        try {
            //Solr客户端
            solrClient = new HttpSolrClient.Builder(url).build();

            //Solr输入文档
            SolrInputDocument solrInputDocument = new SolrInputDocument();
            solrInputDocument.addField("id", "6");
            solrInputDocument.addField("name", "小灵通手机");
            solrInputDocument.addField("price", 10000);

            //添加输入文档
            solrClient.add(solrInputDocument);
            //提交
            solrClient.commit();
        } catch (Exception e) {
            e.fillInStackTrace();
        } finally {
            //关闭资源
            solrClient.close();
        }
    }

效果图:

 2.删除实现:

    @Test
    public void deleteTest() throws Exception {
        String url = "http://192.168.0.107:8983/solr/testcore";

        HttpSolrClient httpSolrClient = null;

        try {
            httpSolrClient = new HttpSolrClient.Builder(url).build();

            httpSolrClient.deleteById("5");

            httpSolrClient.commit();
        } catch (Exception e) {
            e.fillInStackTrace();
        } finally {
            httpSolrClient.close();
        }
    }

3.查询功能

 //查询 
  @Test
    public void showSolr() throws Exception {
        String url = "http://192.168.0.107:8983/solr/testcore";

        HttpSolrClient solrClient = null;
        try {
            solrClient = new HttpSolrClient.Builder(url).build();

            //封装所有查询条件
            SolrQuery solrQuery = new SolrQuery();
            //查询所有
            solrQuery.setQuery("*:*");
            //根据条件查询
            //solrQuery.setQuery("name=热卖);
            QueryResponse response = solrClient.query(solrQuery);
            SolrDocumentList results = response.getResults();

            System.out.println("总条数" + results.getNumFound());

            for (SolrDocument list : results){
                System.out.println(list);
            }
        } catch (Exception e) {
            e.fillInStackTrace();
        } finally {
            solrClient.close();
        }
    }

效果图

4.高亮操作

    //高亮
    @Test
    public void highlightest() throws IOException {
        //连接solr地址
        String url = "http://192.168.0.107:8983/solr/testcore";
        //创建solr客户端
        HttpSolrClient solrClient = null;

        try {
            solrClient = new HttpSolrClient.Builder(url).build();
            //封装查询
            SolrQuery solrQuery = new SolrQuery();
            //根据条件查询
            solrQuery.setQuery("name:热卖");
            //开启高亮
            solrQuery.setHighlight(true);
            //设置高亮键
            solrQuery.addHighlightField("name");
            //前缀
            solrQuery.setHighlightSimplePre("<span>");
            //后缀
            solrQuery.setHighlightSimplePost("</span>");

            QueryResponse response = solrClient.query(solrQuery);
            //获取数据
            SolrDocumentList results = response.getResults();
            //获取高亮返回值
            Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
            //遍历
            for (SolrDocument list : results) {
                System.out.println(list.get("id"));
                Map<String, List<String>> map = highlighting.get(list.get("id"));

                List<String> HLList = map.get("name");

                //判断
                if (HLList != null && HLList.size() > 0) {
                    System.out.println(HLList.get(0));
                } else {
                    System.out.println(list.get("name"));
                }
                System.out.println("===============");
                System.out.println(list.get("price"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //关闭资源
            solrClient.close();
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喝汽水的猫^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值