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
1
2
3
4
5
6
7
|
private final static string url= "http://localhost:8080/solr/java" ;
public solrclient server= null ;
@before
public void init() throws exception{
server= new httpsolrclient(url);
}
|
删除所有分词
1
2
3
4
5
6
|
//删除所有分词
@test
public void testdel() throws exception{
server.deletebyquery( "*:*" );
server.commit(); //先删除 基于query的删除 会删除所有建立的索引文件
}
|
增加分词
1
2
3
4
5
6
7
8
9
|
@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增加分词
1
2
3
4
5
6
7
8
|
@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();
}
|
查询结果
1
2
3
4
5
6
7
8
9
10
11
12
13
|
@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
1
2
3
4
5
6
7
8
9
|
@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());
}
}
|
将结果集高亮显示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
@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