一、准备

solrhome/collection1/conf/schema.xml 配置文件中定义相关的字段。

<!--name:该字段的名称。type:fieldType 字段对应的名称。"text_ik" 是我自定义的一个字段类型,并配置了中文分词器。
-->
<field name="product_name" type="text_ik" indexed="true" stored="true"/>
<field name="product_price"  type="float" indexed="true" stored="true"/>
<field name="product_description" type="text_ik" indexed="true" stored="false" />
<field name="product_catalog_name" type="string" indexed="true" stored="true" /><!--当从 "product_keywords" 字段搜索时,会搜索 "product_name" 和 "product_description"字段。
-->
<field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="product_name" dest="product_keywords"/>
<copyField source="product_description" dest="product_keywords"/>

这里通过新建 Maven 项目完成测试,在pom.xml中添加对应的依赖:

    <!-- 这里使用 7.2.1 的版本 --><dependency><groupId>org.apache.solr</groupId><artifactId>solr-solrj</artifactId><version>7.2.1</version></dependency><!-- 添加 Junit 测试的依赖 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency>

二、测试增删改

增删改相对来说比较简单,这里放在一起进行测试,Solr 中没有提供专门的修改方法,会根据 id 在文档中查找,如果没有找到就是添加,找到了就会覆盖原来的数据,即修改。

2.1新增与修改

编写 Java 代码:

    @Testpublic void indexCreateTest() throws Exception {// 创建和Solr 服务端的连接,并指定 Solr 实例是 "collection1"SolrClient client = new HttpSolrClient.Builder("http://192.168.248.136:8080/solr/collection1").build();// 创建 Solr 文档对象SolrInputDocument document = new SolrInputDocument();// 向文档对象中添加指定字段对应的字段值,字段必须先定义后使用,且必须要有 id 字段// 如果是修改,只需要固定 id 字段的值,修改其他的字段即可document.addField("id", "a1");document.addField("product_catalog_name", "幽默杂货");document.addField("product_price", "20");document.addField("product_name", "小王子");// 将文档添加到 client 对象中client.add(document);// 提交client.commit();}

在浏览器端进行验证:

2.2删除

编写 Java 代码:

    @Testpublic void indexDelTest() throws Exception {SolrClient client = new HttpSolrClient.Builder("http://192.168.248.136:8080/solr/collection1").build();// 根据 id 删除// client.deleteById("a1");// 根据查询删除, *:* 表示删除所有client.deleteByQuery("product_name:小王子");client.commit();}

这里就不在浏览器验证了。

三、测试查询

相对于增删改操作,往往需要我们做的是查询操作。查询操作也相对比较复杂,有关查询的设置,可以在浏览器端查看,只要在代码中设置即可。

查询高亮的结果比较麻烦,这里将浏览器端的查询结果贴出来,希望能帮助大家更好理解高亮数据的获取方式。需要高亮显示的字段是:product_name,查询关键字是:小王子

编写 Java 代码:

    @Testpublic void indexSearchTest() throws Exception {SolrClient client = new HttpSolrClient.Builder("http://192.168.248.136:8080/solr/collection1").build();// 创建查询对象SolrQuery query = new SolrQuery();// 设置默认搜索字段,如果不指定搜索的字段,则从默认字段中搜索query.set("df", "product_keywords");// 指定搜索域与搜索的关键字query.setQuery("product_name:小王子");// 如果不定搜索域,则从默认搜索域中搜索,如下//query.setQuery("手机");// 设置搜索的过滤器,只搜索"product_price" 在 10-20 之间的query.addFilterQuery("product_price:[15 TO 30]");// 设置起始的条数,默认是 0query.setStart(0);// 设置查询的条数,默认是 10 query.setRows(5);// 设置高亮query.setHighlight(true);// 设置显示高亮的字段query.addHighlightField("product_name");// 设置高亮字段值的前缀query.setHighlightSimplePre("<span style=\"color:red\">");// 设置高亮字段值的后缀query.setHighlightSimplePost("</span>");// 获得查询结果的响应对象QueryResponse response = client.query(query);// 从响应对象中获得结果集对象SolrDocumentList list = response.getResults();System.out.println("查询到的总记录数:" + list.getNumFound());// 遍历结果集for (SolrDocument document : list){System.out.println("product_price : " + document.get("product_price"));System.out.println("product_name : " + document.get("product_name"));// 从响应对象中获得高亮,并处理Map<String, Map<String, List<String>>> map = response.getHighlighting();List<String> lightList = map.get(document.get("id")).get("product_name");if(lightList != null && lightList.size() > 0) {System.out.println("high lighting product_name : " + lightList.get(0));}System.out.println("==================================");}}

查询结果输出:

(完)

Solrj实现增删改查相关推荐

  1. solr系列三:solr和spring整合并实现增删改查功能

    在这篇文章中将通过代码带大家一步步实现spring和solrj的整合,并实现solrj的增删改查功能. 1.solrj的spring配置如下: <beans xmlns="http:/ ...

  2. Solr的安装步骤及增删改查代码示例

    一.solr的下载 http://lucene.apache.org/solr/ 解压到合适的位置,以4.10.3为例.solr是一个服务,里面有solr项目war包. 二.找到solr的war包 s ...

  3. java map 输入 查询 修改_Mybatis增删改查mapper文件写法详解

    1. 插入 INSERT sql命令(命令里通过#{}获取对象属性) EG: INSERT INTO PRAC_PERSON(p_NAME,P_PASSWORD) VALUES(#{name},#{p ...

  4. resultset mysql_MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ [正文] 一.ResultSet接口的介绍: 对数据库的查询操作,一般需要返回查询结果,在程序中,JDBC为我们提供了ResultSet接口来专门处理查 ...

  5. 带头节点单链表的增删改查

    单链表有很多结构循环单链表,有头节点的单链表,无头节点的单链表,双节点单链表,以下源码是以有一个头节点的单链表为例写的增删改查的各种功能,就是下图 然后各个注释也在函数后面写着,这玩意确实还挺难,源码 ...

  6. vs连接mysql建一个表并增删查改_VS连接SQL Server数据库,增删改查详细教程(C#代码)...

    工具: 1.Visual Studio (我使用的是vs2013) 2.SQL Server  (我使用的是sql server2008) 操作: 1.打开SQL Server,打开后会看到数据库的初 ...

  7. MySQL数据库(五)使用pymysql对数据库进行增删改查

    折腾好半天的数据库连接,由于之前未安装 pip ,而且自己用的python 版本为3.6. 只能用 pymysql 来连接数据库,(如果有和我一样未安装 pip 的朋友请 点这里http://blog ...

  8. 易买网的一些增删改查

    正如题目所说的一样,今天就来说说易买网中的一些增删改查,主要的功能有注册.用户管理以及商品分类等! 1.注册 1.1 注册涉及到了一个ajax远端技术,主要是用来控制注册用户在数据库中是否存在: &l ...

  9. Mybatis入门:2(xml形式的增删改查)

    xml形式的增删改查 这里感觉没啥好讲的,照着代码自己敲一遍.认真再看看应该都懂的. Maven工程坐标 <?xml version="1.0" encoding=" ...

最新文章

  1. DWRUtil的方法使用说明
  2. 第三十二讲 ASP.NET网络打印
  3. 模板类可以使用虚函数,模板函数不能是虚函数
  4. CRMEB后台前端文档说明
  5. Struts2中使用OGNL表达式投影(过滤)集合
  6. 【clickhouse】clickhouse 大表删除 Size 256G is greater than max_[table/partition]_size_to_drop 50GB
  7. 【Computer Organization笔记18】大实验讨论:控制器设计、指令流程表
  8. 360 支持linux版本下载地址,360安全浏览器国产稳定版本发布,提供deb软件包下载,附介绍...
  9. aurelia_Aurelia历险记:创建自定义PDF查看器
  10. 实训报告万能模板计算机专业,计算机实训报告模板
  11. YDOOK:MyPLayer:Jinwei Lin 最新开源 Python 音频视频基本播放器
  12. Linux系统下使用4G模块EC20实现拨号上网
  13. Android 手机红外遥控器实现
  14. [小说连载]张小庆,在路上(19)- 真的要在北京吗
  15. 长文总结 | Python基础知识点,建议收藏
  16. 【直播回顾】昇思MindSpore易用性SIG2022上半年回顾总结
  17. 谷歌的Gson存储的时间转fastjson时报错JSONException: For input string: Jan 1, 1994 12:00:00 AM
  18. OCR识别-证件识别
  19. WIN7系统忘记密码怎么办?忘记开机密码的解决方法
  20. Flash助手弹窗怎么禁止?

热门文章

  1. 零基础带你五行代码实现聊天机器人-再这么玩?咱还能做朋友吗?
  2. springboot集成spring security实现登录和注销
  3. JPA中实现查询list
  4. [HAOI2006]受欢迎的牛
  5. nacos作注册中心+feign接口调用进行服务提供和服务消费代码示例
  6. 【学习笔记】操作系统之哲学原理
  7. 数据结构和算法之时间复杂度
  8. tp5中mysql使用REGEXP 正则匹配
  9. JS基础语法(03)-前自增与后自增区别
  10. IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)