Solr如何管理索引库
使用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如何管理索引库相关推荐
- Solr快速入门第七讲——使用SolrJ管理索引库
什么是SolrJ? SolrJ是访问Solr服务的Java客户端,提供索引(这里指的就是创建索引.更新索引以及删除索引)和搜索(这里指的是查询索引)的请求方法,SolrJ通常嵌入在业务系统中,通过So ...
- Solr的工作原理以及如何管理索引库
1. Solr的简介 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也 ...
- Solr管理索引库——(十三)
a) 维护索引 1. 添加/更新文档 添加或更新单个文档 2. 批量导入数据(导入mysql的) 使用dataimport插件批量导入数据. 第一步:把dataimport插件 ...
- Windows系统环境下Solr之Java实战(三)使用solrJ管理索引库
https://www.cnblogs.com/zhuxiaojie/p/5764680.html https://www.cnblogs.com/xieyupeng/p/9317158.html 转 ...
- java solr 实现_Java实现全文检索-Solr后台管理
1.1. Solr后台管理 1.1.1. 管理界面 z.png 1.1.2. Dashboard 仪表盘,显示了该Solr实例开始启动运行的时间.版本.系统资源.jvm等信息. 1.1.3. Logg ...
- Solr集群搭建,zookeeper集群搭建,Solr分片管理,Solr集群下的DataImport,分词配置。...
1 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的索引数据量少的时候 ...
- Solr集群搭建,zookeeper集群搭建,Solr分片管理,Solr集群下的DataImport,分词配置。
1 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的索引数据量少的时候 ...
- 用Apache Hadoop和Apache Solr处理和索引医学图像
原文链接:Processing and Indexing Medical Images With Apache Hadoop and Apache Solr 作者:Justin Kestelyn 译者 ...
- SolrJ查询索引库
查询索引库 查询步骤 第一步:创建一个SolrServer对象 第二步:创建一个SolrQuery对象 第三步:向SolrQuery中添加查询条件.过滤条件 第四步:执行查询,得到一个Response ...
最新文章
- VSTO Office二次开发PPTRibbonX命令操作及对象添加
- 层次聚类多维度matlab实现_第34集 python机器学习:凝聚聚类
- 洛谷P3391文艺平衡树(Splay)
- 博客园代码高亮显示教程
- php call()函数,PHP中__call()方法详解
- 性能测试--【MySQL】Sysbench 性能压测
- 部分代码_C primer plus 第三章 (代码部分)
- CSS选择器、优先级与匹配原理
- 一款在线画图工具的使用(推荐)
- Setup.txt如何修改? Setup.txt的详细介绍
- MySQL——Using Filesort文件排序详解
- CISSP 报名保姆级教程
- Word基础(三十四)引文与书目
- Word 中插入高亮代码 | planetB | syntax-highlight-word
- 作为管理人员如何处理下属工作的偏差
- 解决chorm火狐浏览器被hao123和2345主页劫持问题(亲测有效)
- 微信隐藏功能系列:微信笔记怎么制作?微信备忘录?计划表?2步完成
- PHP ACCESS-CONTROL-ALLOW-ORIGIN ,设置跨域头
- IntelliJ idea——》创建tag、删除tag
- AI 边缘计算平台 - RK3588 / 旭日 X3 派 / 爱芯派 AX620A / K510 简介
热门文章
- 专业摄影旗舰!vivo X30系列正式发布:支持60倍超级变焦
- 何小鹏“维权”事后谈造车:心很累 曾购上千瓶白酒缓解压力
- 点赞!这4款你常用的App已上线隐私政策
- 宁德时代811电芯初现真容 搭配宝马X1混动汽车能量密度提升近6成
- 发光的“盖面神器”!全新Kindle青春版体验评测来了
- 华为Mate 20 X 5G版打通5G电话:音质饱满画面清晰
- 「十年老测试」测试员的职场之路
- 前端面试题汇总(jQuery)
- 你是否已经忘了Serlvet是什么?
- wps java转换成doc_WPS能转PDF吗?WPS转换不能错过的一款软件!