详解java整合solr5.0之solrj的使用
作者:古越剑箫 时间:2023-07-23 03:12:06
1、首先导入solrj需要的的架包
2、需要注意的是低版本是solr是使用SolrServer进行URL实例的,5.0之后已经使用SolrClient替代这个类了,在添加之后首先我们需要根据schema.xml配置一下我们的分词器
这里的msg_all还需要在schema.xml中配置
它的主要作用是将msg_title,msg_content两个域的值拷贝到msg_all域中,我们在搜索的时候可以只搜索这个msg_all域就可以了,
solr默认搜索需要带上域,比如
solr更改默认搜索域的地方也在schema.xml,它默认是搜索text域的,但是5.0之后不在这里配置默认搜索域了,它的文档也告诉我们,在solrconfig.xml中配置
在solrconfig.xml中配置默认搜素域,这样我们就可以按照我们自己的域进行搜索了
配置好以上,就可以使用代码进行CURD
private final static String URL="http://localhost:8080/solr/java";
public SolrClient server=null;
@Before
public void init() throws Exception{
server=new HttpSolrClient(URL);
}
删除所有分词
//删除所有分词
@Test
public void testDel() throws Exception{
server.deleteByQuery("*:*");
server.commit();//先删除 基于query的删除 会删除所有建立的索引文件
}
增加分词
@Test
public void testAdd() throws Exception{
SolrInputDocument doc=new SolrInputDocument();
doc.addField("id", "3");
doc.addField("msg_title", "新浪微博");
doc.addField("msg_content", "我有一个微博帐号名字叫做什么呢?");
server.add(doc);
server.commit();
}
基于Bean增加分词
@Test
public void test03() throws Exception{
List<Message> msgs=new ArrayList<Message>();
msgs.add(new Message("4", "第四个测试solr测试文件", new String[]{"中华人民共和国万岁","中华上下五千年那年"}));
msgs.add(new Message("5", "第5个好朋友是什么意思呢?", new String[]{"上海是个好地方","歌唱我们亲爱的祖国曾经走过千山万水"}));
server.addBeans(msgs);
server.commit();
}
查询结果
@Test
public void test04() throws Exception{
//定义查询内容 * 代表查询所有 这个是基于结果集
SolrQuery query = new SolrQuery("solr");
query.setStart(0);//起始页
query.setRows(3);//每页显示数量
QueryResponse rsp = server.query( query );
SolrDocumentList results = rsp.getResults();
System.out.println(results.getNumFound());//查询总条数
for(SolrDocument doc:results){
System.out.println(doc);
}
}
将查询结果集封装为对象Bean
@Test
public void test05() throws Exception{
SolrQuery query = new SolrQuery("中华");// * 号 是查询 所有的数据
QueryResponse rsp = server.query( query );
List<Message> beans = rsp.getBeans(Message.class);//这个不能获取查询的总数了 也不能高亮
for(Message message:beans){
System.out.println(message.toString());
}
}
将结果集高亮显示
@Test
public void test06() throws Exception{
//定义查询内容 * 代表查询所有 这个是基于结果集
SolrQuery query = new SolrQuery("solr");
query.setStart(0);//起始页
query.setRows(5);//每页显示数量
query.setParam("hl.fl", "msg_title,msg_content");//设置哪些字段域会高亮显示
query.setHighlight(true).setHighlightSimplePre("<span class='hight'>")
.setHighlightSimplePost("</span>");
QueryResponse rsp = server.query( query );
SolrDocumentList results = rsp.getResults();
System.out.println(results.getNumFound());//查询总条数
for(SolrDocument doc:results){
String id = (String) doc.getFieldValue("id"); //id is the uniqueKey field
if(rsp.getHighlighting().get(id)!=null){
//高亮必须要求存储 不存储的话 没法添加高亮
System.out.println(rsp.getHighlighting().get(id).get("msg_title"));
}
}
}
ok,solr的基本使用就完成了
来源:http://www.cnblogs.com/gyjx2016/p/5925163.html
标签:java,solr
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Android通过原生APi获取所在位置的经纬度
2022-11-12 17:56:14
Android编程使用HTTP协议与TCP协议实现上传文件的方法
2023-11-22 15:37:43
Java LinkedList实现班级信息管理系统
2021-06-27 04:00:11
![](https://img.aspxhome.com/file/2023/7/84657_0s.jpg)
在Winform和WPF中注册全局快捷键实现思路及代码
2023-03-13 23:00:25
C# DataSet查看返回结果集的实现
2021-10-10 09:54:31
![](https://img.aspxhome.com/file/2023/1/111091_0s.png)
C#实现基于Base64的加密解密类实例
2023-02-09 19:35:57
详解Java中方法重写和方法重载的6个区别
2023-11-28 13:42:18
![](https://img.aspxhome.com/file/2023/2/60072_0s.jpg)
Java语言中cas指令的无锁编程实现实例
2022-10-13 19:20:28
Java lambda表达式与泛型整理总结
2021-07-15 19:57:14
Android实现带节点的进度条
2022-01-16 08:58:02
![](https://img.aspxhome.com/file/2023/0/108240_0s.jpg)
Java8新特性之重复注解与类型注解详解
2023-01-16 16:18:38
![](https://img.aspxhome.com/file/2023/1/81251_0s.jpg)
SpringMVC项目异常处理机制详解
2023-03-12 13:13:25
photoView实现图片多点触控效果
2023-06-21 20:16:03
![](https://img.aspxhome.com/file/2023/7/122057_0s.jpg)
flutter 怎么实现app整体灰色效果
2023-01-24 21:23:22
![](https://img.aspxhome.com/file/2023/7/137727_0s.jpg)
C# KeyUp事件中MessageBox的回车(Enter)键回调问题解决方案
2021-06-25 06:24:06
C# WinForm实现自动更新程序的方法详解
2021-12-12 16:19:54
![](https://img.aspxhome.com/file/2023/7/106407_0s.gif)
IDEA:Git stash 暂存分支修改的实现代码
2023-11-29 09:16:35
![](https://img.aspxhome.com/file/2023/3/78363_0s.jpg)
unity实现摄像头跟随
2021-07-26 12:50:10
Android 实现把bitmap图片的某一部分的颜色改成其他颜色
2022-12-28 00:12:03
![](https://img.aspxhome.com/file/2023/5/139585_0s.jpg)
Java实现从Html文本中提取纯文本的方法
2023-06-18 20:28:26