solrj入门学习(增删查改)
1.使用solrj需要先下载solr,点击进入solr官网
1.1 拷贝jar包,
" class="reference-link">
1.1 拷贝jar包,复制jar包进项目
1.1 拷贝jar包,复制jar包进项目
2.增删查改入门(进行操作需要开启solr服务,如果不会,可参考tomcat整合solr)
@Test //增加
public void fun01() throws IOException, SolrServerException {
//连接solr 如果使用的是默认的solrcore,可以 solr 后面的路径可以不用http://localhost:8080/solr/
SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection2");
//创建索引
//创建文档
SolrInputDocument document = new SolrInputDocument();
/**
* 参数1 域名 需要注意的是,如果没有这个域,会报错 ERROR: [doc=text001] unknown field xxx
* 参数2 值
*/
document.addField("id","text001");
document.addField("product_name","中国是个好国家啊!");
//创建索引
server.add(document);
//提交事务
server.commit();
}
2.1执行后,网页搜索结果如下
2.2 修改操作,其实操作跟增加一样,只要id一样就能达到修改的效果,
@Test //修改
public void fun2() throws IOException, SolrServerException {
//连接solr 如果使用的是默认的solrcore,可以 solr 后面的路径可以不用http://localhost:8080/solr/
SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection2");
//创建索引
//创建文档
SolrInputDocument document = new SolrInputDocument();
/**
* 参数1 域名 需要注意的是,如果没有这个域,会报错 ERROR: [doc=text001] unknown field xxx
* 参数2 值
*/
document.addField("id","text001");
document.addField("product_name","中国真的是个好国家啊,真的不骗你!");
//创建索引
server.add(document);
//提交事务
server.commit();
}
2.3搜索结果如下
2.4 删除
@Test //删除
public void fun03() throws IOException, SolrServerException {
//连接solr 如果使用的是默认的solrcore,可以 solr 后面的路径可以不用http://localhost:8080/solr/
SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection2");
server.deleteById("text001");
server.commit();
}
搜索结果如下
2.5查询
@Test //
public void fun04() throws IOException, SolrServerException {
//连接solr 如果使用的是默认的solrcore,可以 solr 后面的路径可以不用http://localhost:8080/solr/
SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection2");
SolrQuery query = new SolrQuery();
//查询所有
query.setQuery("*:*");
QueryResponse response = server.query(query);
//获取结果集
SolrDocumentList results = response.getResults();
//共查询到商品数量
System.out.println("共查询到商品数量:" + results.getNumFound());
for (SolrDocument result : results) {
//查询所有
System.out.println(result.get("id"));
}
}
输出结果如下………
然后我们来做一个复杂的查询,,,,,,,,,,,,
@Test //复杂的查询
public void fun05() throws IOException, SolrServerException {
//连接solr 如果使用的是默认的solrcore,可以 solr 后面的路径可以不用http://localhost:8080/solr/
SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection2");
//获取query对象
SolrQuery query = new SolrQuery();
//设置查询条件
query.setQuery("product_name:钻石");
//设置过滤条件
query.addFilterQuery("product_price:[0 TO 20]"); //价格 0 - 20之间
//排序
query.setSort("product_price", SolrQuery.ORDER.desc);//倒序
//分页查理
query.setStart(0);
query.setRows(10); //设置查询行数
QueryResponse resp = server.query(query);
//获取结果集
SolrDocumentList results = resp.getResults();
System.out.println("查询总数:"+results.getNumFound());
for (SolrDocument result : results) {
System.out.println(result.get("id"));
System.out.println(result.get("product_price"));
System.out.println(result.get("product_name"));
}
}
输出结果如下:
然后我们来做一些更复杂的查询语句
@Test //复杂的查询
public void fun06() throws IOException, SolrServerException {
//连接solr 如果使用的是默认的solrcore,可以 solr 后面的路径可以不用http://localhost:8080/solr/
SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection2");
//获取query对象
SolrQuery query = new SolrQuery();
//设置查询条件
query.setQuery("钻石"); //product_keywords:
//设置过滤条件
query.addFilterQuery("product_price:[0 TO 20]"); //价格 0 - 20之间
//排序
query.setSort("product_price", SolrQuery.ORDER.desc);//倒序
//分页查理
query.setStart(0);
query.setRows(10); //设置查询行数
//设置默认搜索的域
query.set("df","product_keywords");
//设置高亮
query.setHighlight(true);
//设置高亮的区域
query.addHighlightField("product_name");
//高亮显示的前缀
query.setHighlightSimplePre("<em>");
//高亮显示的后缀
query.setHighlightSimplePost("</em>");
//执行查询
QueryResponse resp = server.query(query);
//获取结果集
SolrDocumentList results = resp.getResults();
System.out.println("查询总数:"+results.getNumFound());
//获取高亮显示
Map<String, Map<String, List<String>>> highlighting = resp.getHighlighting();
for (SolrDocument result : results) {
//如果product_name有高亮,那么list就有值
// List<String> list = highlighting.get("id").get("product_name");
Map<String, List<String>> map = highlighting.get(result.get("id"));
if(map != null){
List<String> list = map.get("product_name");
System.out.println(list);
String pname = null;
if(list != null && list.size() > 0){
pname = list.get(0);
} else {
pname = result.get("product_name").toString();
}
System.out.println("id"+result.get("id"));
System.out.println("价格"+result.get("product_price"));
System.out.println("商品名"+pname);
}
}
}
查询的结果如下
![SouthEast 8][]
还没有评论,来说两句吧...