使用SolrJ可以实现索引库的增删改查操作。

1 添加文档

第一步:把solrJ的jar包添加到工程中。

第二步:创建一个SolrServer,使用HttpSolrServer创建对象。

第三步:创建一个文档对象SolrInputDocument对象。

第四步:向文档中添加域。必须有id域,域的名称必须在schema.xml中定义。

第五步:把文档添加到索引库中。

第六步:提交。

@Test
public void testSolrJAdd() throws SolrServerException, IOException {// 创建一个SolrServer对象。创建一个HttpSolrServer对象// 需要指定solr服务的urlSolrServer solrServer = new HttpSolrServer("http://101.132.69.111:8080/solr/collection1");// 创建一个文档对象SolrInputDocumentSolrInputDocument document = new SolrInputDocument();// 向文档中添加域,必须有id域,域的名称必须在schema.xml中定义document.addField("id", "123");document.addField("item_title", "红米手机");document.addField("item_price", 1000);// 把文档对象写入索引库solrServer.add(document);// 提交solrServer.commit();
}

2 删除文档

2.1 根据id删除

第一步:创建一个SolrServer对象。

第二步:调用SolrServer对象的根据id删除的方法。

第三步:提交。

@Test
public void deleteDocumentById() throws Exception {SolrServer solrServer = new HttpSolrServer("http://101.132.69.111:8080/solr/collection1");solrServer.deleteById("123");// 提交solrServer.commit();
}

2.2 根据查询删除

@Test
public void deleteDocumentByQuery() throws Exception {SolrServer solrServer = new HttpSolrServer("http://101.132.69.111:8080/solr/collection1");//这边会根据分词去删solrServer.deleteByQuery("item_title:红米手机");solrServer.commit();
}

3 查询索引库

第一步:创建一个SolrServer对象

第二步:创建一个SolrQuery对象。

3 向SolrQuery中添加查询条件、过滤条件。。。

第四步:执行查询。得到一个Response对象。

5 取查询结果。

第六步:遍历结果并打印。

3.1 简单查询

@Test
public void queryDocument() throws Exception {// 第一步:创建一个SolrServer对象SolrServer solrServer = new HttpSolrServer("http://101.132.69.111:8080/solr/collection1");// 第二步:创建一个SolrQuery对象。SolrQuery query = new SolrQuery();// 第三步:向SolrQuery中添加查询条件、过滤条件。。。query.setQuery("*:*");// 第四步:执行查询。得到一个Response对象。QueryResponse response = solrServer.query(query);// 第五步:取查询结果。SolrDocumentList solrDocumentList = response.getResults();System.out.println("查询结果的总记录数:" + solrDocumentList.getNumFound());// 第六步:遍历结果并打印。for (SolrDocument solrDocument : solrDocumentList) {System.out.println(solrDocument.get("id"));System.out.println(solrDocument.get("item_title"));System.out.println(solrDocument.get("item_price"));}
}

3.2 带高亮显示

@Test
public void searchDocumet() throws Exception {// 创建一个SolrServer对象SolrServer solrServer = new HttpSolrServer("http://101.132.69.111:8080/solr/collection1");// 创建一个SolrQuery对象SolrQuery query = new SolrQuery();// 设置查询条件、过滤条件、分页条件、排序条件、高亮// query.set("q", "*:*");query.setQuery("手机");// 分页条件query.setStart(0);query.setRows(30);// 设置默认搜索域query.set("df", "item_keywords");// 设置高亮query.setHighlight(true);// 高亮显示的域query.addHighlightField("item_title");query.setHighlightSimplePre("<div>");query.setHighlightSimplePost("</div>");// 执行查询,得到一个Response对象QueryResponse response = solrServer.query(query);// 取查询结果SolrDocumentList solrDocumentList = response.getResults();// 取查询结果总记录数System.out.println("查询结果总记录数:" + solrDocumentList.getNumFound());for (SolrDocument solrDocument : solrDocumentList) {System.out.println(solrDocument.get("id"));// 取高亮显示Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();List<String> list = highlighting.get(solrDocument.get("id")).get("item_title");String itemTitle = "";if (list != null && list.size() > 0) {itemTitle = list.get(0);} else {itemTitle = (String) solrDocument.get("item_title");}System.out.println(itemTitle);System.out.println(solrDocument.get("item_sell_point"));System.out.println(solrDocument.get("item_price"));System.out.println(solrDocument.get("item_image"));System.out.println(solrDocument.get("item_category_name"));System.out.println("=============================================");}
}

4. Solr服务器中的后台数据处理

​ 这个其实是通过图形界面操作,只需手动填写查询条件,不需要进行代码处理。但是实际项目开发中,还是需要进行代码编写的。

4.1 solr的基础语法

q  查询的关键字,此参数最为重要,例如,q=id:1,默认为q=*:*,fq  (filter query)过虑查询,提供一个可选的筛选器查询。返回在q查询符合结果中同时符合的fq条件的查询结果
​
sort  排序方式,例如id  desc 表示按照 “id” 降序start  返回结果的第几条记录开始,一般分页用,默认0开始
​
rows  指定返回结果最多有多少条记录,默认值为 10,配合start实现分页
​
fl  指定返回哪些字段,用逗号或空格分隔,注意:字段区分大小写,例如,fl= id,title,sort
​
df   默认的查询字段,一般默认指定wt  (writer type)指定输出格式,有 xml, json, php等indent   返回的结果是否缩进,默认关闭
​
hl 高亮hl.fl  设定高亮显示的字段hl.requireFieldMatch   如果置为true,除非用hl.fl指定了该字段,查询结果才会被高亮。它的默认值是false。hl.usePhraseHighlighter   如果一个查询中含有短语(引号框起来的)那么会保证一定要完全匹配短语的才会被高亮。hl.highlightMultiTerm如果使用通配符和模糊搜索,那么会确保与通配符匹配的term会高亮。默认为false,同时hl.usePhraseHighlighter要为true。hl.fragsize   返回的最大字符数。默认是100.如果为0,那么该字段不会被fragmented且整个字段

需要更多教程,微信扫码即可

Solr如何管理索引库相关推荐

  1. Solr快速入门第七讲——使用SolrJ管理索引库

    什么是SolrJ? SolrJ是访问Solr服务的Java客户端,提供索引(这里指的就是创建索引.更新索引以及删除索引)和搜索(这里指的是查询索引)的请求方法,SolrJ通常嵌入在业务系统中,通过So ...

  2. Solr的工作原理以及如何管理索引库

    1. Solr的简介 ​ Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也 ...

  3. Solr管理索引库——(十三)

    a)          维护索引 1.  添加/更新文档 添加或更新单个文档 2.   批量导入数据(导入mysql的) 使用dataimport插件批量导入数据. 第一步:把dataimport插件 ...

  4. Windows系统环境下Solr之Java实战(三)使用solrJ管理索引库

    https://www.cnblogs.com/zhuxiaojie/p/5764680.html https://www.cnblogs.com/xieyupeng/p/9317158.html 转 ...

  5. java solr 实现_Java实现全文检索-Solr后台管理

    1.1. Solr后台管理 1.1.1. 管理界面 z.png 1.1.2. Dashboard 仪表盘,显示了该Solr实例开始启动运行的时间.版本.系统资源.jvm等信息. 1.1.3. Logg ...

  6. Solr集群搭建,zookeeper集群搭建,Solr分片管理,Solr集群下的DataImport,分词配置。...

    1   什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的索引数据量少的时候 ...

  7. Solr集群搭建,zookeeper集群搭建,Solr分片管理,Solr集群下的DataImport,分词配置。

    1   什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的索引数据量少的时候 ...

  8. 用Apache Hadoop和Apache Solr处理和索引医学图像

    原文链接:Processing and Indexing Medical Images With Apache Hadoop and Apache Solr 作者:Justin Kestelyn 译者 ...

  9. SolrJ查询索引库

    查询索引库 查询步骤 第一步:创建一个SolrServer对象 第二步:创建一个SolrQuery对象 第三步:向SolrQuery中添加查询条件.过滤条件 第四步:执行查询,得到一个Response ...

最新文章

  1. VSTO Office二次开发PPTRibbonX命令操作及对象添加
  2. 层次聚类多维度matlab实现_第34集 python机器学习:凝聚聚类
  3. 洛谷P3391文艺平衡树(Splay)
  4. 博客园代码高亮显示教程
  5. php call()函数,PHP中__call()方法详解
  6. 性能测试--【MySQL】Sysbench 性能压测
  7. 部分代码_C primer plus 第三章 (代码部分)
  8. CSS选择器、优先级与匹配原理
  9. 一款在线画图工具的使用(推荐)
  10. Setup.txt如何修改? Setup.txt的详细介绍
  11. MySQL——Using Filesort文件排序详解
  12. CISSP 报名保姆级教程
  13. Word基础(三十四)引文与书目
  14. Word 中插入高亮代码 | planetB | syntax-highlight-word
  15. 作为管理人员如何处理下属工作的偏差
  16. 解决chorm火狐浏览器被hao123和2345主页劫持问题(亲测有效)
  17. 微信隐藏功能系列:微信笔记怎么制作?微信备忘录?计划表?2步完成
  18. PHP ACCESS-CONTROL-ALLOW-ORIGIN ,设置跨域头
  19. IntelliJ idea——》创建tag、删除tag
  20. AI 边缘计算平台 - RK3588 / 旭日 X3 派 / 爱芯派 AX620A / K510 简介

热门文章

  1. 专业摄影旗舰!vivo X30系列正式发布:支持60倍超级变焦
  2. 何小鹏“维权”事后谈造车:心很累 曾购上千瓶白酒缓解压力
  3. 点赞!这4款你常用的App已上线隐私政策
  4. 宁德时代811电芯初现真容 搭配宝马X1混动汽车能量密度提升近6成
  5. 发光的“盖面神器”!全新Kindle青春版体验评测来了
  6. 华为Mate 20 X 5G版打通5G电话:音质饱满画面清晰
  7. 「十年老测试」测试员的职场之路
  8. 前端面试题汇总(jQuery)
  9. 你是否已经忘了Serlvet是什么?
  10. wps java转换成doc_WPS能转PDF吗?WPS转换不能错过的一款软件!