详解java整合solr5.0之solrj的使用
程序员文章站
2023-12-04 15:35:20
1、首先导入solrj需要的的架包
2、需要注意的是低版本是solr是使用solrserver进行url实例的,5.0之后已经使用solrclient替代这个类了,在...
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的基本使用就完成了
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
下一篇: JavaScript中双符号的运算详解
推荐阅读
-
详解java整合solr5.0之solrj的使用
-
Java排序的那些事之sort方法的使用详解
-
Java基础之详解HashSet的使用方法
-
Java本地缓存工具之LoadingCache的使用详解
-
Java并发编程深入理解之Synchronized的使用及底层原理详解 下
-
Java安全框架——Shiro的使用详解(附springboot整合Shiro的demo)
-
Java并发编程深入理解之Synchronized的使用及底层原理详解 上
-
Java进阶篇之十五 ----- JDK1.8的Lambda、Stream和日期的使用详解(很详细)
-
Java中关于SSM之整合Redis的详解
-
Java之网络编程的使用详解