一、项目结构
二、pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.lzm</groupId> <artifactId>solr-test</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>5.0.0</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.5.6</version> </dependency> <!-- <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>compile</scope> </dependency> </dependencies> </project>
三、Java代码
package com.lzm.solr; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.client.solrj.response.UpdateResponse; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocumentList; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.util.NamedList; import org.junit.Before; import org.junit.Test; import java.io.IOException; /** * Solr7 操作 solr版本是7.3.0 * solr-solrj 使用的是5.0.0 */ public class SolrTest { private static final String URL = "http://127.0.0.1:8080/solr7/zhaoyl_core"; private HttpSolrClient server = null; @Before public void init() { // 创建 server server = new HttpSolrClient(URL); } /** * 添加文档 */ @Test public void addDoc() { SolrInputDocument doc = new SolrInputDocument(); //doc.addField("id", 100); doc.addField("content", "solr本分提供了很多分词器(不过对中文的分词实在不能用,愤怒!!!),对了,那么什么是分词呢?比如“数据"); doc.addField("create_time", "2020-04-27 11:15:37"); try { UpdateResponse response = server.add(doc); // 提交 server.commit(); System.out.println("########## Query Time :" + response.getQTime()); System.out.println("########## Elapsed Time :" + response.getElapsedTime()); System.out.println("########## Status :" + response.getStatus()); } catch (Exception e) { e.printStackTrace(); } } /** * 查询全部 */ @Test public void testQuery() { String queryStr = "*:*"; SolrQuery params = new SolrQuery(queryStr); params.set("rows", 10); try { QueryResponse response = null; response = server.query(params); SolrDocumentList list = response.getResults(); System.out.println("####### 总共 : " + list.getNumFound() + "条记录"); for (SolrDocument doc : list) { System.out.println("####### id : " + doc.get("id") + " title : " + doc.get("content")+ " create_time : " + doc.get("create_time")); } } catch (Exception e) { e.printStackTrace(); } } /** * 查询 */ @Test public void testQueryCondition() { String queryStr = "评论"; SolrQuery query = new SolrQuery(queryStr); query.set("rows", 10); query.setHighlight(true); query.addHighlightField("content");// 高亮字段 //设置高亮的样式 query.setHighlightSimplePre("<font color='red'>"); query.setHighlightSimplePost("</font>"); try { QueryResponse response = null; response = server.query(query); SolrDocumentList list = response.getResults(); System.out.println("####### 总共 : " + list.getNumFound() + "条记录"); for (SolrDocument doc : list) { System.out.println("####### id : " + doc.get("id") + " title : " + doc.get("content")+ " create_time : " + doc.get("create_time")); } NamedList namedList = (NamedList) response.getResponse().get("highlighting"); for (int i = 0; i < namedList.size(); i++){ System.out.println("id=" + namedList.getName(i) + "文档中高亮显示的字段:" + namedList.getVal(i)); } } catch (Exception e) { e.printStackTrace(); } } }
四、查询结果
####### 总共 : 9条记录 ####### id : 31 title : [添加评论] create_time : [2018-04-16 15:28:29.0] ####### id : 4 title : [测试评论4] create_time : [2018-04-12 15:17:18.0] ####### id : 32 title : [测试添加,统计评论数] create_time : [2018-04-17 13:56:38.0] ####### id : 33 title : [测试添加,统计评论数2] create_time : [2018-04-17 14:00:05.0] ####### id : 34 title : [3DR雪漾盈白保湿乳评论] create_time : [2018-04-18 11:46:36.0] ####### id : 35 title : [3DR雪漾盈白保湿霜评论] create_time : [2018-04-18 11:46:43.0] ####### id : 37 title : [3DR雪漾盈白保湿霜评论2] create_time : [2018-04-18 11:52:07.0] ####### id : 36 title : [3DR雪漾盈白瓷白精华素评论] create_time : [2018-04-18 11:46:43.0] ####### id : 38 title : [3DR雪漾盈白瓷白精华素评论3] create_time : [2018-04-18 11:53:09.0] id=31文档中高亮显示的字段:{content=[添加<font color='red'>评</font><font color='red'>论</font>]} id=4文档中高亮显示的字段:{content=[测试<font color='red'>评</font><font color='red'>论</font>4]} id=32文档中高亮显示的字段:{content=[测试添加,统计<font color='red'>评</font><font color='red'>论</font>数]} id=33文档中高亮显示的字段:{content=[测试添加,统计<font color='red'>评</font><font color='red'>论</font>数2]} id=34文档中高亮显示的字段:{content=[3DR雪漾盈白保湿乳<font color='red'>评</font><font color='red'>论</font>]} id=35文档中高亮显示的字段:{content=[3DR雪漾盈白保湿霜<font color='red'>评</font><font color='red'>论</font>]} id=37文档中高亮显示的字段:{content=[3DR雪漾盈白保湿霜<font color='red'>评</font><font color='red'>论</font>2]} id=36文档中高亮显示的字段:{content=[3DR雪漾盈白瓷白精华素<font color='red'>评</font><font color='red'>论</font>]} id=38文档中高亮显示的字段:{content=[3DR雪漾盈白瓷白精华素<font color='red'>评</font><font color='red'>论</font>3]}