19使用SolrJ管理索引库

简介: 19使用SolrJ管理索引库

什么是solrJ

solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务,如下图:

依赖的jar包

添加文档

实现步骤

第一步:创建一个java工程

第二步:导入jar包。包括solrJ的jar包。还需要

代码实现

注意: 里面的field的键值必须 solr安装目录/solr/conf 目录下的 schema.xml里面含有!!!

//和solr服务器创建连接
    //参数:solr服务器的地址
    SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
    //创建一个文档对象
    SolrInputDocument document = new SolrInputDocument();
    //向文档中添加域
    //第一个参数:域的名称,域的名称必须是在schema.xml中定义的
    //第二个参数:域的值
    document.addField("id", "c0001");
    document.addField("title", "solr使用说明书");
    document.addField("comments", "使用说明书的评论");
    document.addField("content", "使用说明书内容详情");
    //把document对象添加到索引库中
    solrServer.add(document);
    //提交修改
    solrServer.commit();

删除文档

根据id删除
//创建连接
    SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
    //根据id删除文档
    solrServer.deleteById("c0001");
    //提交修改
    solrServer.commit();
根据查询删除

查询语法完全支持Lucene的查询语法。

//创建连接
SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
//根据查询条件删除文档
solrServer.deleteByQuery("*:*");
//提交修改
solrServer.commit();

修改文档

在solrJ中修改没有对应的update方法,只有add方法,只需要添加一条新的文档,和被修改的文档id一致就,可以修改了。本质上就是先删除后添加。

查询文档

//创建连接
    SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
    //创建一个query对象
    SolrQuery query = new SolrQuery();
    //设置查询条件
    query.setQuery("*:*");
    //执行查询
    QueryResponse queryResponse = solrServer.query(query);
    //取查询结果
    SolrDocumentList solrDocumentList = queryResponse.getResults();
    //共查询到商品数量
    System.out.println("共查到的内容:" + solrDocumentList.getNumFound());
    //遍历查询的结果
    for (SolrDocument solrDocument : solrDocumentList) {
      System.out.println(solrDocument.get("id"));
      System.out.println(solrDocument.get("title"));
      System.out.println(solrDocument.get("comments"));
      System.out.println(solrDocument.get("content"));
    }

打印内容:

目录
相关文章
|
前端开发 关系型数据库 MySQL
基于python+mysql的宠物领养网站系统
基于python+mysql的宠物领养网站系统
238 2
|
调度
Dataphin功能Tips系列(6)-月调度周期任务补数据的业务日期选择
一个销售额结算的周期任务的调度周期是月调度---每月1号进行调度,但是有一天调整了计算口径后希望重新计算过去几个月的销售额,此时补数据任务的业务日期应该如何选择?
272 4
Dataphin功能Tips系列(6)-月调度周期任务补数据的业务日期选择
|
Java 应用服务中间件 微服务
【Java异常】feign.FeignException: status 400 reading xxx 异常解决方案
【Java异常】feign.FeignException: status 400 reading xxx 异常解决方案
357 0
|
消息中间件 存储 监控
ActiveMQ系列: ActiveMQ 的死信队列与消费重试机制
maximumRedeliveryDelay:最大传送延迟,只在 useExponentialBackOff 为 true 时有效(V5.5),假设首次重连间隔为 10ms,倍数为 2,那么第二次重连时间间隔为 20ms,第三次重连时间间隔为 40ms,当重连时间间隔大的最大重连时间间隔时,以后每次重连时间间隔都为最大重连时间间隔。默认为 -1。
1217 0
ActiveMQ系列: ActiveMQ 的死信队列与消费重试机制
|
JavaScript 数据挖掘
jupyter平台最强插件没有之一
jupyter平台最强插件没有之一
151 3
|
XML 数据格式 Python
【Python】已解决:xml.parsers.expat.ExpatError: no element found: Line 1, column 0
【Python】已解决:xml.parsers.expat.ExpatError: no element found: Line 1, column 0
496 0
|
算法 Java Android开发
Android rxjava和LiveData中的内存泄漏
Android rxjava和LiveData中的内存泄漏
335 0
|
安全
openssh7.6之前漏洞
openssh7.6之前漏洞
148 1
|
算法 IDE 程序员
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用(三)
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用
235 5
|
C++
【PTA】​L1-005 考试座位号​ (C++)
【PTA】​L1-005 考试座位号​ (C++)
367 0
【PTA】​L1-005 考试座位号​ (C++)