solrj java_【solr】java整合solr5.0之solrj的使用

1、首先导入solrj需要的的架包

511a0af7002508ee19c64b75df5eedc3.png

2、需要注意的是低版本是solr是使用SolrServer进行URL实例的,5.0之后已经使用SolrClient替代这个类了,在添加之后首先我们需要根据schema.xml配置一下我们的分词器

f0604ddb684d47d81ae8ff7e356064e7.png

这里的msg_all还需要在schema.xml中配置

02583d724cb9094a57e4113f339d7d78.png

它的主要作用是将msg_title,msg_content两个域的值拷贝到msg_all域中,我们在搜索的时候可以只搜索这个msg_all域就可以了,

solr默认搜索需要带上域,比如

c9afb1136f6d79a3f8fcb6ae388bdb3a.png

solr更改默认搜索域的地方也在schema.xml,它默认是搜索text域的,但是5.0之后不在这里配置默认搜索域了,它的文档也告诉我们,在solrconfig.xml中配置

f5e80243ebe045891833c82524245abc.png

在solrconfig.xml中配置默认搜素域,这样我们就可以按照我们自己的域进行搜索了

07f22288779d36310da8fb885d064143.png

配置好以上,就可以使用代码进行CURD

private final static String URL="http://localhost:8080/solr/java";public SolrClient server=null;

@Beforepublic void init() throwsException{

server=newHttpSolrClient(URL);

}

删除所有分词

//删除所有分词

@Testpublic void testDel() throwsException{

server.deleteByQuery("*:*");

server.commit();//先删除 基于query的删除 会删除所有建立的索引文件

}

增加分词

@Testpublic void testAdd() throwsException{

SolrInputDocument doc=newSolrInputDocument();

doc.addField("id", "3");

doc.addField("msg_title", "新浪微博");

doc.addField("msg_content", "我有一个微博帐号名字叫做什么呢?");

server.add(doc);

server.commit();

}

基于Bean增加分词

@Testpublic void test03() throwsException{

List msgs=new ArrayList();

msgs.add(new Message("4", "第四个测试solr测试文件", new String[]{"中华人民共和国万岁","中华上下五千年那年"}));

msgs.add(new Message("5", "第5个好朋友是什么意思呢?", new String[]{"上海是个好地方","歌唱我们亲爱的祖国曾经走过千山万水"}));

server.addBeans(msgs);

server.commit();

}

查询结果

@Testpublic void test04() throwsException{//定义查询内容 * 代表查询所有 这个是基于结果集

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

@Testpublic void test05() throwsException{

SolrQuery query= new SolrQuery("中华");//* 号 是查询 所有的数据

QueryResponse rsp =server.query( query );

List beans = rsp.getBeans(Message.class);//这个不能获取查询的总数了 也不能高亮

for(Message message:beans){

System.out.println(message.toString());

}

}

将结果集高亮显示

@Testpublic void test06() throwsException{//定义查询内容 * 代表查询所有 这个是基于结果集

SolrQuery query = new SolrQuery("solr");

query.setStart(0);//起始页

query.setRows(5);//每页显示数量

query.setParam("hl.fl", "msg_title,msg_content");//设置哪些字段域会高亮显示

query.setHighlight(true).setHighlightSimplePre("")

.setHighlightSimplePost("");

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的基本使用就完成了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值