solrj入门学习(增删查改)

朱雀 2022-06-01 01:20 348阅读 0赞

1.使用solrj需要先下载solr,点击进入solr官网

1.1 拷贝jar包,

" class="reference-link">SouthEast

1.1 拷贝jar包,复制jar包进项目

SouthEast 1

1.1 拷贝jar包,复制jar包进项目

SouthEast 2

2.增删查改入门(进行操作需要开启solr服务,如果不会,可参考tomcat整合solr)

  1. @Test //增加
  2. public void fun01() throws IOException, SolrServerException {
  3. //连接solr 如果使用的是默认的solrcore,可以 solr 后面的路径可以不用http://localhost:8080/solr/
  4. SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection2");
  5. //创建索引
  6. //创建文档
  7. SolrInputDocument document = new SolrInputDocument();
  8. /**
  9. * 参数1 域名 需要注意的是,如果没有这个域,会报错 ERROR: [doc=text001] unknown field xxx
  10. * 参数2 值
  11. */
  12. document.addField("id","text001");
  13. document.addField("product_name","中国是个好国家啊!");
  14. //创建索引
  15. server.add(document);
  16. //提交事务
  17. server.commit();
  18. }

2.1执行后,网页搜索结果如下

SouthEast 3

2.2 修改操作,其实操作跟增加一样,只要id一样就能达到修改的效果,

  1. @Test //修改
  2. public void fun2() throws IOException, SolrServerException {
  3. //连接solr 如果使用的是默认的solrcore,可以 solr 后面的路径可以不用http://localhost:8080/solr/
  4. SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection2");
  5. //创建索引
  6. //创建文档
  7. SolrInputDocument document = new SolrInputDocument();
  8. /**
  9. * 参数1 域名 需要注意的是,如果没有这个域,会报错 ERROR: [doc=text001] unknown field xxx
  10. * 参数2 值
  11. */
  12. document.addField("id","text001");
  13. document.addField("product_name","中国真的是个好国家啊,真的不骗你!");
  14. //创建索引
  15. server.add(document);
  16. //提交事务
  17. server.commit();
  18. }

2.3搜索结果如下

SouthEast 4

2.4 删除

  1. @Test //删除
  2. public void fun03() throws IOException, SolrServerException {
  3. //连接solr 如果使用的是默认的solrcore,可以 solr 后面的路径可以不用http://localhost:8080/solr/
  4. SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection2");
  5. server.deleteById("text001");
  6. server.commit();
  7. }

搜索结果如下

SouthEast 5

2.5查询

  1. @Test //
  2. public void fun04() throws IOException, SolrServerException {
  3. //连接solr 如果使用的是默认的solrcore,可以 solr 后面的路径可以不用http://localhost:8080/solr/
  4. SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection2");
  5. SolrQuery query = new SolrQuery();
  6. //查询所有
  7. query.setQuery("*:*");
  8. QueryResponse response = server.query(query);
  9. //获取结果集
  10. SolrDocumentList results = response.getResults();
  11. //共查询到商品数量
  12. System.out.println("共查询到商品数量:" + results.getNumFound());
  13. for (SolrDocument result : results) {
  14. //查询所有
  15. System.out.println(result.get("id"));
  16. }
  17. }

输出结果如下………

SouthEast 6

然后我们来做一个复杂的查询,,,,,,,,,,,,

  1. @Test //复杂的查询
  2. public void fun05() throws IOException, SolrServerException {
  3. //连接solr 如果使用的是默认的solrcore,可以 solr 后面的路径可以不用http://localhost:8080/solr/
  4. SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection2");
  5. //获取query对象
  6. SolrQuery query = new SolrQuery();
  7. //设置查询条件
  8. query.setQuery("product_name:钻石");
  9. //设置过滤条件
  10. query.addFilterQuery("product_price:[0 TO 20]"); //价格 0 - 20之间
  11. //排序
  12. query.setSort("product_price", SolrQuery.ORDER.desc);//倒序
  13. //分页查理
  14. query.setStart(0);
  15. query.setRows(10); //设置查询行数
  16. QueryResponse resp = server.query(query);
  17. //获取结果集
  18. SolrDocumentList results = resp.getResults();
  19. System.out.println("查询总数:"+results.getNumFound());
  20. for (SolrDocument result : results) {
  21. System.out.println(result.get("id"));
  22. System.out.println(result.get("product_price"));
  23. System.out.println(result.get("product_name"));
  24. }
  25. }

输出结果如下:

SouthEast 7

然后我们来做一些更复杂的查询语句

  1. @Test //复杂的查询
  2. public void fun06() throws IOException, SolrServerException {
  3. //连接solr 如果使用的是默认的solrcore,可以 solr 后面的路径可以不用http://localhost:8080/solr/
  4. SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection2");
  5. //获取query对象
  6. SolrQuery query = new SolrQuery();
  7. //设置查询条件
  8. query.setQuery("钻石"); //product_keywords:
  9. //设置过滤条件
  10. query.addFilterQuery("product_price:[0 TO 20]"); //价格 0 - 20之间
  11. //排序
  12. query.setSort("product_price", SolrQuery.ORDER.desc);//倒序
  13. //分页查理
  14. query.setStart(0);
  15. query.setRows(10); //设置查询行数
  16. //设置默认搜索的域
  17. query.set("df","product_keywords");
  18. //设置高亮
  19. query.setHighlight(true);
  20. //设置高亮的区域
  21. query.addHighlightField("product_name");
  22. //高亮显示的前缀
  23. query.setHighlightSimplePre("<em>");
  24. //高亮显示的后缀
  25. query.setHighlightSimplePost("</em>");
  26. //执行查询
  27. QueryResponse resp = server.query(query);
  28. //获取结果集
  29. SolrDocumentList results = resp.getResults();
  30. System.out.println("查询总数:"+results.getNumFound());
  31. //获取高亮显示
  32. Map<String, Map<String, List<String>>> highlighting = resp.getHighlighting();
  33. for (SolrDocument result : results) {
  34. //如果product_name有高亮,那么list就有值
  35. // List<String> list = highlighting.get("id").get("product_name");
  36. Map<String, List<String>> map = highlighting.get(result.get("id"));
  37. if(map != null){
  38. List<String> list = map.get("product_name");
  39. System.out.println(list);
  40. String pname = null;
  41. if(list != null && list.size() > 0){
  42. pname = list.get(0);
  43. } else {
  44. pname = result.get("product_name").toString();
  45. }
  46. System.out.println("id"+result.get("id"));
  47. System.out.println("价格"+result.get("product_price"));
  48. System.out.println("商品名"+pname);
  49. }
  50. }
  51. }

查询的结果如下

  1. ![SouthEast 8][]

发表评论

表情:
评论列表 (有 0 条评论,348人围观)

还没有评论,来说两句吧...

相关阅读

    相关 springMVC入门增删理解

    springMVC入门增删改查理解 真的好久没有发原创博文了,懒惰啊! 最近忙于对H5页面的理解,工作大都是前端移动端的工作,虽然技能熟练和代码理解深刻了,但对于目