Solr学习(二)SolrJ的增删改查操作

ゞ 浴缸里的玫瑰 2022-04-12 05:15 335阅读 0赞
  1. public class SolrTest {
  2. /**
  3. * 添加文档
  4. * @throws Exception
  5. */
  6. @Test
  7. public void addDocument() throws Exception {
  8. // 第一步:把solrJ的jar包添加到工程中。
  9. // 第二步:创建一个SolrServer,使用HttpSolrServer创建对象。
  10. SolrServer server = new HttpSolrServer("http://192.168.25.141:8081/solr");
  11. // 第三步:创建一个文档对象SolrInputDocument对象。
  12. SolrInputDocument document = new SolrInputDocument();
  13. // 第四步:向文档中添加域。必须有id域,域的名称必须在schema.xml中定义。
  14. document.addField("id", "test001");
  15. document.addField("item_title", "刮胡刀");
  16. document.addField("item_price", 88);
  17. // 第五步:把文档添加到索引库中。
  18. server.add(document);
  19. //第六步:提交
  20. server.commit();
  21. }
  22. /**
  23. * 删除文档:根据id删除
  24. * @throws Exception
  25. */
  26. @Test
  27. public void deleteDocumentById() throws Exception {
  28. // 第一步:创建一个SolrServer对象。
  29. SolrServer solrServer = new HttpSolrServer("http://192.168.25.141:8081/solr");
  30. // 第二步:调用SolrServer对象的根据id删除的方法。
  31. solrServer.deleteById("test001");
  32. // 第三步:提交。
  33. solrServer.commit();
  34. }
  35. /**
  36. * 删除文档:根据查询删除
  37. * @throws Exception
  38. */
  39. @Test
  40. public void deleteDocumentByQuery() throws Exception {
  41. SolrServer solrServer = new HttpSolrServer("http://192.168.25.141:8081/solr");
  42. solrServer.deleteByQuery("item_title:刮胡刀");
  43. solrServer.commit();
  44. }
  45. /**
  46. * 查询索引库
  47. * @throws Exception
  48. */
  49. @Test
  50. public void queryDocument() throws Exception {
  51. // 第一步:创建一个SolrServer对象
  52. SolrServer solrServer = new HttpSolrServer("192.168.25.141:8081/solr");
  53. // 第二步:创建一个SolrQuery对象。
  54. SolrQuery query = new SolrQuery();
  55. // 第三步:向SolrQuery中添加查询条件、过滤条件。。。
  56. query.setQuery("*:*");
  57. // 第四步:执行查询。得到一个Response对象。
  58. QueryResponse response = solrServer.query(query);
  59. // 第五步:取查询结果。
  60. SolrDocumentList solrDocumentList = response.getResults();
  61. System.out.println("查询结果的总记录数:" + solrDocumentList.getNumFound());
  62. // 第六步:遍历结果并打印。
  63. for (SolrDocument solrDocument : solrDocumentList) {
  64. System.out.println(solrDocument.get("id"));
  65. System.out.println(solrDocument.get("item_title"));
  66. System.out.println(solrDocument.get("item_price"));
  67. }
  68. }
  69. /**
  70. * 查询索引库:带高亮显示
  71. * @throws Exception
  72. */
  73. @Test
  74. public void queryDocumentWithHighLighting() throws Exception {
  75. // 第一步:创建一个SolrServer对象
  76. SolrServer solrServer = new HttpSolrServer("http://192.168.25.141:8081/solr");
  77. // 第二步:创建一个SolrQuery对象。
  78. SolrQuery query = new SolrQuery();
  79. // 第三步:向SolrQuery中添加查询条件、过滤条件。。。
  80. query.setQuery("*:*");
  81. //指定默认搜索域
  82. query.set("df", "item_keywords");
  83. //开启高亮显示
  84. query.setHighlight(true);
  85. //高亮显示的域
  86. query.addHighlightField("item_title");
  87. query.setHighlightSimplePre("<em>");
  88. query.setHighlightSimplePost("</em>");
  89. // 第四步:执行查询。得到一个Response对象。
  90. QueryResponse response = solrServer.query(query);
  91. // 第五步:取查询结果。
  92. SolrDocumentList solrDocumentList = response.getResults();
  93. System.out.println("查询结果的总记录数:" + solrDocumentList.getNumFound());
  94. // 第六步:遍历结果并打印。
  95. for (SolrDocument solrDocument : solrDocumentList) {
  96. System.out.println(solrDocument.get("id"));
  97. //取高亮显示
  98. Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
  99. List<String> list = highlighting.get(solrDocument.get("id")).get("item_title");
  100. String itemTitle = null;
  101. if (list != null && list.size() > 0) {
  102. itemTitle = list.get(0);
  103. } else {
  104. itemTitle = (String) solrDocument.get("item_title");
  105. }
  106. System.out.println(itemTitle);
  107. System.out.println(solrDocument.get("item_price"));
  108. }
  109. }
  110. }

发表评论

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

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

相关阅读