solr学习之路 摆脱solr页面客户端使用代码实现增删查改

前面的学习都是关于客户端的使用,今天我们用代码来控制solr
这时你就会发现为啥学那么久的客户端的原因了。

增加和更新以及删除
为啥增加和更新一起,因为他们在solr中的操作是一样的
ok 我们开始写代码吧

//链接solr客户端
SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
        //创建solr文档对象
        SolrInputDocument solrInputDocument = new SolrInputDocument();
        //域要先定义后使用
        solrInputDocument.addField("id", "a4521");
        solrInputDocument.addField("product_name", "香蕉");
        solrInputDocument.addField("product_price", "40");
        //修改或者新增(若id一样则更新不一样则新增)
        solrServer.add(solrInputDocument);
        //通过id删除
        solrServer.deleteById("a4521");
        //通过查询语句删除
        solrServer.deleteByQuery("*:*");
        //提交
        solrServer.commit();

简单的增加和删除就ok了,批量增加和更新的话用循环就ok

查询才是重点
接下来我们搞搞查询

// 连接solr的服务
        SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
        // 获取solr查询对象
        SolrQuery solrQuery = new SolrQuery();
        // 设置查询关键字
        solrQuery.setQuery("台灯");
        // 设置过滤查询
        solrQuery.addFilterQuery("product_price:[1 TO 100]");
        // 设置排序
        solrQuery.setSort("product_price", ORDER.asc);
        // 从结果中挑选指定范围的数据
        // 设置起始
        solrQuery.setStart(0);
        // 设置数据数量
        solrQuery.setRows(10);
        // 设置默认搜索域
        solrQuery.set("df", "product_keywords");

        // 开启高亮
        solrQuery.setHighlight(true);
        // 设置高亮域
        solrQuery.addHighlightField("product_name");
        // 设置高亮前缀
        solrQuery.setHighlightSimplePre("<em>");
        // 设置高亮后缀
        solrQuery.setHighlightSimplePost("</em>");

        // 查询并获取查询响应对象
        QueryResponse queryResponse = solrServer.query(solrQuery);
        // 从查询响应中获取结果集
        SolrDocumentList solrDocumentList = queryResponse.getResults();
        // 打印结果集中的数据
        for (SolrDocument solrDocument : solrDocumentList) {
            // 获取查询结果
            solrDocument.get("id");
            // 获取高亮结果
            Map<String, Map<String, List<String>>> map = queryResponse.getHighlighting();
            //获取多层嵌套的结果
            List<String> lists = map.get(solrDocument.get("id")).get("product_name");
            if(lists != null)
                System.out.println(lists.get(0));
        }

运行结果
这里写图片描述

上面代码对应页面客户端的功能
这里写图片描述

到此solr的学习算入门了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章