SolrJ使用
1 //向solr索引库中添加索引
2 public void addDoc() throws Exception {
3 //创建solr客户端的对象
4 HttpSolrClient client = new HttpSolrClient("http://localhost:8080/solr/core");
5 //创建文档对象
6 SolrInputDocument sd = new SolrInputDocument();
7
8 sd.addField("id", "001");
9 sd.addField("product_name", "solr教程");
10 sd.addField("product_catalog_name", "IT技术");
11 sd.addField("product_description", "很厉害的技术");
12 sd.addField("product_price", 299);
13 sd.addField("product_picture", "001.jpg");
14 //把文档加入服务器
15 client.add(sd);
16 client.commit();
17 }
删除文档
1 public void delDoc() throws Exception {
2 //创建solr客户端的对象
3 HttpSolrClient client = new HttpSolrClient("http://localhost:8080/solr/core");
4 client.deleteById("001");
5 // client.deleteByQuery("product_name:青蛙"); 根据查询删除
6 client.commit();
7 }
查询
public void queryDoc() throws Exception {
//创建solr客户端的对象
HttpSolrClient client = new HttpSolrClient("http://localhost:8080/solr/core");
//创建solr的查询对象
SolrQuery sq = new SolrQuery();
//设置查询条件
sq.set("q", "product_name:青蛙");
sq.set("fq", "product_price:[10 TO 100]");
sq.addSort("product_price",ORDER.asc);
//查询
QueryResponse qr = client.query(sq);
//获得查询结果
SolrDocumentList results = qr.getResults();
//获得查询的记录数
long numFound = results.getNumFound();
System.out.println("查询的记录数是 " + numFound);
for (SolrDocument sd : results) {
//获得文档域
String id = (String) sd.getFieldValue("id");
String product_name = (String) sd.getFieldValue("product_name");
String product_catalog_name = (String) sd.getFieldValue("product_catalog_name");
String product_description = (String) sd.getFieldValue("product_description");
double product_price = (double) sd.getFieldValue("product_price");
System.out.println("--------------");
System.out.println("id " + id);
System.out.println("商品名字 " + product_name);
System.out.println("商品类别名字 " + product_catalog_name);
System.out.println("商品描述 " + product_description);
System.out.println("商品价格 " + product_price);
}
}
带高亮的查询
1 public void queryDoc1() throws Exception {
2 //创建solr客户端的对象
3 HttpSolrClient client = new HttpSolrClient("http://localhost:8080/solr/core");
4 //创建solr的查询对象
5 SolrQuery sq = new SolrQuery();
6 //设置查询条件
7 sq.set("q", "product_name:青蛙");
8 sq.set("fq", "product_price:[10 TO 100]");
9 sq.addSort("product_price",ORDER.asc);
10 //开启高亮
11 sq.setHighlight(true);
12 sq.addHighlightField("product_name");
13 sq.setHighlightSimplePre("<b>");
14 sq.setHighlightSimplePost("</b>");
15 //查询
16 QueryResponse qr = client.query(sq);
17 //获得查询结果
18 SolrDocumentList results = qr.getResults();
19 //获得查询的记录数
20 long numFound = results.getNumFound();
21 System.out.println("查询的记录数是 " + numFound);
22 for (SolrDocument sd : results) {
23 //获得文档域
24 String id = (String) sd.getFieldValue("id");
25 String product_name = (String) sd.getFieldValue("product_name");
26 String product_catalog_name = (String) sd.getFieldValue("product_catalog_name");
27 String product_description = (String) sd.getFieldValue("product_description");
28 double product_price = (double) sd.getFieldValue("product_price");
29 System.out.println("--------------");
30 System.out.println("id " + id);
31 System.out.println("商品名字 " + product_name);
32 System.out.println("商品类别名字 " + product_catalog_name);
33 System.out.println("商品描述 " + product_description);
34 System.out.println("商品价格 " + product_price);
35 //获得高亮的结构体
36 Map<String, Map<String, List<String>>> highlighting = qr.getHighlighting();
37 if(highlighting != null){
38 //根据id来获得某一个域的高亮的内容
39 Map<String, List<String>> map = highlighting.get(id);
40 //根据具体的域来获得高亮内容
41 List<String> list = map.get("product_name");
42 if(list != null && list.size() > 0){
43 //打印高亮内容
44 for (String str : list) {
45 System.out.println(str);
46 }
47 }
48 }
49 }
50 }
SolrJ使用的更多相关文章
- 我与solr(四)--solrJ
SolrJ索引库: solr提供的一个客户端操作框架,在文件/solr6.2/dist下面可以找到该jar包solrj.jar以及相关jar包,可以使用maven添加. java使用solrJ如下: ...
- Solrj和Solr DIH索引效率对比分析
测试软件环境: 1.16G windows7 x64 32core cpu . 2.jdk 1.7 tomcat 6.x solr 4.8 数据库软件环境: 1.16G windows7 x64 ...
- Solr JAVA客户端SolrJ 4.9使用示例教程
http://my.oschina.net/cloudcoder/blog/305024 简介 SolrJ是操作Solr的JAVA客户端,它提供了增加.修改.删除.查询Solr索引的JAVA接口.So ...
- [solr] - SolrJ增删查
使用SolrJ进行对Solr的增.删.查功能. 参考引用: http://wiki.apache.org/solr/Solrj Eclipse中新建一个项目:TestSolr 其中SorlJ的Lib包 ...
- 【solr】java整合solr5.0之solrj的使用
1.首先导入solrj需要的的架包 2.需要注意的是低版本是solr是使用SolrServer进行URL实例的,5.0之后已经使用SolrClient替代这个类了,在添加之后首先我们需要根据schem ...
- Solr5.3.1 SolrJ查询索引结果
通过SolrJ获取Solr检索结果 1.通过SolrParams的方式提交查询参数 SolrClient solr = new HttpSolrClient("http://localhos ...
- 使用solrj操作solr索引库
(solrj)初次使用solr的开发人员总是很郁闷,不知道如何去操作solr索引库,以为只能用<五分钟solr4.5教程(搭建.运行)>中讲到的用xml文件的形式提交数据到索引库,其实没有 ...
- Solr使用初探——SolrJ的使用
二.SolrJ的使用 SolrJ覆盖了solr的全部功能,下面将自己在实际开发中所使用的程序粘贴出来并适当加以解释,由于本人比较菜,代码书写不是那么的精练,还请见谅. 1. 创建solrserver ...
- 使用solrj进行DIH操作
背景说明:在一个项目中需要将Mongodb中的数据导入到solr中完成搜索.在solr中Mysql数据库有对应的DIH包,可以通过配置sql语句完成数据的导入.Mongodb下也有开源的工具用来实现数 ...
- 使用solrj操作solr索引库,solr是lucene服务器
客户端开发 Solrj 客户端开发 Solrj Solr是搭建好的lucene服务器 当然不可能完全满足一般的业务需求 可能 要针对各种的架构和业务调整 这里就需要用到Solrj了 Solrj是Sol ...
随机推荐
- MPI计算π
MPI计算\(\pi\) 利用公式 \[\int_0^1 \frac{4}{1+x^2}dx = \pi \] #include<stdio.h> #include<mpi.h> ...
- virtualenv最佳实战
一 系统环境 windows 10 64-bit 安装python 2.7.18 和python 3.8两个版本 二 安装 默认会把virtualenv安装到系统默认python版本中 pip ins ...
- session 机制和 httpsession 详解 (转载)
https://www.cnblogs.com/bjanzhuo/archive/2013/02/27/3575884.html 一.术语session 在我的经验里,session这个词被滥用的程度 ...
- Jigsaw pre-training:摆脱ImageNet,拼图式主干网络预训练方法 | ECCV 2020
Jigsaw pre-training以拼图的方式从检测数据集中生成用于主干网络预训练的数据集,而不需要额外的预训练数据集,如ImageNet.另外为了让网络更好的适应拼图数据,论文提出ERF-ada ...
- 一文教你读懂JVM类加载机制
Java运行程序又被称为WORA(Write Once Run Anywhere,在任何地方运行只需写入一次),意味着我们程序员小哥哥可以在任何一个系统上开发Java程序,但是却可以在所有系统上畅通运 ...
- 记录laravelchina中的微信小程序教程的npm install安装报错
npm安装报错时 npm ERR! code EIOnpm ERR! syscall symlinknpm ERR! path ../@babel/parser/bin/babel-parser.js ...
- Android开发必有功能,更新版本提示,检测是否有新版本更新。下载完成后进行安装。
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985,转载请说明出处. 给大家介绍个东西,MarkDown真的超级超级好用.哈哈.好了, 正题内容如下: 先 ...
- android 数据绑定(5) kotlin 的binding bug
1.BR找不到,无法自动更新 1.1 描述 https://stackoverflow.com/questions/57983508/android-studio-kotlin-databinding ...
- 1.OpenGL mac开发环境搭建记录
1.安装GLEW 和GLFW,转摘至:https://www.cnblogs.com/pretty-guy/p/11357793.html 2.开始测试,整个工程报错,关键信息如下: code sig ...
- 现象:当指定logback的FileNamePattern为日期2020-01-15后,如果有线程不断的往里写log,过了零点文件不会变成下一日2020-01-16,还是会在2020-01-15里继续写 结论:写log的线程不停,文件不会按日子更换。
logback版本:1.1.11 这个是我实验验证的,昨天我配置了一个logback,然后用两个线程不断往里写log,结果发现到了今天2020-01-16日,log文件还是昨天的logbackCfg. ...