|
| 1 | +--- |
| 2 | +title: Solr7.3.0入门教程,部署Solr到Tomcat,配置Solr中文分词器 |
| 3 | +date: 2018-04-13 17:31:11 |
| 4 | +url: lucene/solr-install |
| 5 | +tags: |
| 6 | +- Solr |
| 7 | +- 中文分词 |
| 8 | +categories: |
| 9 | +- Elasticsearch |
| 10 | +--- |
| 11 | + |
| 12 | +### solr 基本介绍 |
| 13 | + |
| 14 | +Apache Solr (读音: SOLer) 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。Apache Solr 中存储的资源是以 Document 为对象进行存储的。每个文档由一系列的 Field 构成,每个 Field 表示资源的一个属性。Solr 中的每个 Document 需要有能唯一标识其自身的属性,默认情况下这个属性的名字是 id,在 Schema 配置文件中使用:id进行描述。 |
| 15 | +Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提 供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。 |
| 16 | + |
| 17 | +<!-- more --> |
| 18 | + |
| 19 | +#### solr 名称来源 |
| 20 | +Search On Lucene Replication |
| 21 | + |
| 22 | +#### solr 历史 |
| 23 | +2004年 CNET 开发 Solar,为 CNET 提供站内搜索服务 |
| 24 | +2006年1月捐献给 Apache ,成为 Apache 的孵化项目 |
| 25 | +一年后 Solr 孵化成熟,发布了1.2版,并成为 Lucene 的子项目 |
| 26 | +2010年6月,solr 发布了的1.4.1版,这是1.4的 bugfix 版本,1.4.1的solr使用的lucene是2.9版本的 |
| 27 | +solr 从1.4.x版本以后,为了保持和lucene同步的版本,solr直接进入3.0版本。 |
| 28 | + |
| 29 | +### 环境准备 |
| 30 | +1. 下载JDK8 安装且配置环境变量 |
| 31 | + 可以直接在[JDK官方网站](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)进行下载。 |
| 32 | + 安装完毕之后[配置环境变量](https://jingyan.baidu.com/article/c85b7a6414f2ee003bac95d5.html)。 |
| 33 | + |
| 34 | +2. 下载Solr7.3.0并解压 |
| 35 | + 可以直接在[Solr官方网站](https://lucene.apache.org/whoweare.html)进行下载。 |
| 36 | + |
| 37 | +  |
| 38 | + http://mirrors.hust.edu.cn/apache/lucene/solr/ |
| 39 | + |
| 40 | +3. 下载Tomcat 8或者 Tomcat 9 并解压 |
| 41 | + 可以直接在[Tomcat官方网站](https://tomcat.apache.org/download-90.cgi)进行下载安装。 |
| 42 | + https://tomcat.apache.org/download-90.cgi |
| 43 | + |
| 44 | +  |
| 45 | + |
| 46 | +### 部署Solr到Tomcat |
| 47 | +说明: 我的解压路径 |
| 48 | +``` |
| 49 | +#Solr:D:\develop\solr-7.3.0 |
| 50 | +#Tomcat:D:\webserver\apache-tomcat-9.0.1 |
| 51 | +``` |
| 52 | +#### 复制Solr文件到Tomcat |
| 53 | +1. 拷贝文件夹 |
| 54 | +D:\develop\solr-7.3.0\server\solr-webapp\webapp 到 |
| 55 | +D:\webserver\apache-tomcat-9.0.1\webapps\ 下,并且重命名为`solr7.3` |
| 56 | +2. 复制D:\develop\solr-7.3.0\server\lib\ext 下的所有Jar包到 |
| 57 | +D:\webserver\apache-tomcat-9.0.1\webapps\solr7.3\WEB-INF\lib |
| 58 | +3. 复制D:\develop\solr-7.3.0\dist下的 |
| 59 | + `solr-dataimporthandler-7.3.0.jar` |
| 60 | + `solr-dataimporthandler-extras-7.3.0.jar ` |
| 61 | +到D:\webserver\apache-tomcat-9.0.1\webapps\solr7.3\WEB-INF\lib |
| 62 | +4. 复制D:\develop\solr-7.3.0\server\lib下的`metrics-`开头的五个Jar |
| 63 | +到D:\webserver\apache-tomcat-9.0.1\webapps\solr7.3\WEB-INF\lib |
| 64 | +5. 复制D:\develop\solr-7.3.0\server\resources\log4j.properties到 |
| 65 | +D:\webserver\apache-tomcat-9.0.1\webapps\solr7.3\WEB-INF\classes |
| 66 | +#### 配置Solr Home |
| 67 | +1. 新建文件夹D:\develop\solr-7.3.0-home,复制D:\develop\solr-7.3.0\server\solr下的所有内容到D:\develop\solr-7.3.0-home。 |
| 68 | +2. 打开D:\webserver\apache-tomcat-9.0.1\webapps\solr7.3\WEB-INF\web.xml |
| 69 | +在47行配置SolrHome,用于指定数据存放位置。 |
| 70 | +``` |
| 71 | +<env-entry> |
| 72 | + <env-entry-name>solr/home</env-entry-name> |
| 73 | + <env-entry-value>D:\develop\solr-7.3.0-home</env-entry-value> |
| 74 | + <env-entry-type>java.lang.String</env-entry-type> |
| 75 | +</env-entry> |
| 76 | +``` |
| 77 | +#### 关闭安全约束 |
| 78 | +注释掉D:\webserver\apache-tomcat-9.0.1\webapps\solr7.3\WEB-INF\web.xml最下方的安全约束,让项目启动之后可以正常访问。 |
| 79 | + |
| 80 | +```xml |
| 81 | + <!-- Get rid of error message --> |
| 82 | + <!-- |
| 83 | + <security-constraint> |
| 84 | + <web-resource-collection> |
| 85 | + <web-resource-name>Disable TRACE</web-resource-name> |
| 86 | + <url-pattern>/</url-pattern> |
| 87 | + <http-method>TRACE</http-method> |
| 88 | + </web-resource-collection> |
| 89 | + <auth-constraint/> |
| 90 | + </security-constraint> |
| 91 | + <security-constraint> |
| 92 | + <web-resource-collection> |
| 93 | + <web-resource-name>Enable everything but TRACE</web-resource-name> |
| 94 | + <url-pattern>/</url-pattern> |
| 95 | + <http-method-omission>TRACE</http-method-omission> |
| 96 | + </web-resource-collection> |
| 97 | + </security-constraint> |
| 98 | + --> |
| 99 | +``` |
| 100 | +#### Tomcat启动访问 |
| 101 | +至此,Solr配置以及完成,启动Tomcat访问 |
| 102 | +http://localhost:8080/solr7.3/index.html |
| 103 | + |
| 104 | +) |
| 105 | + |
| 106 | +### 创建Solr Core |
| 107 | +点击网页左侧菜单Core Admin |
| 108 | +输入 |
| 109 | + name:blog |
| 110 | + instanceDir:blog |
| 111 | +点击`Add Core`,网页上方提示在D:\develop\solr-7.3.0-home\blog下无法找到solrconfig.xml: |
| 112 | + |
| 113 | +``` |
| 114 | +Error CREATEing SolrCore 'blog': Unable to create core [blog] Caused by: Can't find resource 'solrconfig.xml' in classpath or 'D:\develop\solr-7.3.0-home\blog' |
| 115 | +``` |
| 116 | +我们复制官方给出的默认配置,复制 |
| 117 | +D:\develop\solr-7.3.0-home\configsets\_default\conf |
| 118 | +到D:\develop\solr-7.3.0-home\blog下,回到页面,再次点击`Add Core`,等待页面添加成功自动刷新。 |
| 119 | +此时,在SolrHome下的blog文件夹下生成了相关文件: |
| 120 | + |
| 121 | + |
| 122 | + |
| 123 | +### 添加 Core 字段 |
| 124 | +#### 在页面上添加 |
| 125 | +打开http://localhost:8080/solr7.3/index.html选择左侧菜单`Core Selector` 选择刚才添加的blog,接着选择下面的Schema。可以在出现的页面上填写字段信息name:title,field type:string,然后点击`Add Field`完成添加。 |
| 126 | +[Solr中的Field、CopyField、DynamicField与其他Field](https://blog.csdn.net/u011518678/article/details/51871925) |
| 127 | +#### 在配置文件中添加 |
| 128 | +我们打开文件: |
| 129 | +D:\develop\solr-7.3.0-home\blog\conf\managed-schema |
| 130 | +搜索title关键词,搜索到如下信息: |
| 131 | +``` |
| 132 | +<field name="title" type="string" indexed="true" stored="true"/> |
| 133 | +``` |
| 134 | +可见,我们刚才在页面添加的字段信息最终会生成此条配置,因此,我们也可以拷贝这个配置更改name值为content就可以完成content字段的添加。 |
| 135 | + |
| 136 | +配置完成之后点击页面`Core Admin `然后点击`Reload`刷新信息,我们就可以在Schema中查看到content字段。 |
| 137 | + |
| 138 | +### 添加/更新/查询数据 |
| 139 | + |
| 140 | +在页面选择blog Core,选择Documents,在Document(s)中输入下面内容进行数据然后点击Submit Document添加数据,如果ID已经存在,则为更新。如果JSON中没有写ID字段,会随机生成ID。 |
| 141 | + |
| 142 | +``` |
| 143 | +{ |
| 144 | + "id": "10000", |
| 145 | + "title": "Sorl入门教程", |
| 146 | + "content": "sorl下载,solr配置,solr启动" |
| 147 | +} |
| 148 | +``` |
| 149 | +提交之后可以看到成功添加信息的反馈。 |
| 150 | + |
| 151 | +``` |
| 152 | +Status: success |
| 153 | +Response: |
| 154 | +{ |
| 155 | + "responseHeader": { |
| 156 | + "status": 0, |
| 157 | + "QTime": 4 |
| 158 | + } |
| 159 | +} |
| 160 | +``` |
| 161 | + |
| 162 | +数据已经成功添加,如果需要查询数据可以点击左侧`Query`,点击`Execute Query`查询出刚才添加的数据。 |
| 163 | + |
| 164 | + |
| 165 | +### 中文分词器的使用 |
| 166 | + |
| 167 | +在已经运行的页面上,选择blog Core,然后选择`Analysis`,输入中国人民,字段类型选择_text_,点击`Analyse Values`可以看到没有中文分词器的结果: |
| 168 | + |
| 169 | + |
| 170 | + |
| 171 | +下面使用中文分词器,下载ikanalyzer-solr6.5 |
| 172 | +解压将`IKAnalyzer.cfg.xml`以及`stopword.dic`解压到 |
| 173 | +\apache-tomcat-9.0.1\webapps\solr7.3\WEB-INF\classes |
| 174 | + |
| 175 | + 解压将里面的两个jar包`ik-analyzer-solr5-5.x.jar`以及`solr-analyzer-ik-5.1.0.jar`解压到 |
| 176 | + \apache-tomcat-9.0.1\webapps\solr7.3\WEB-INF\lib |
| 177 | + |
| 178 | + 打开刚才创建的blog core目录\solr-7.3.0-home\blog\conf,编辑managed-schema文件添加配置: |
| 179 | + |
| 180 | +``` |
| 181 | + <fieldType name="text_ik" class="solr.TextField"> |
| 182 | + <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> |
| 183 | + </fieldType> |
| 184 | +``` |
| 185 | + |
| 186 | +在页面选择Core Admin -> blog -> Reload 刷新配置,然后选择blog Core,然后选择`Analysis`,输入中国人民,字段类型选择text_ik,点击`Analyse Values`可以看到没有中文分词器的结果: |
| 187 | + |
| 188 | + |
| 189 | + |
| 190 | + |
| 191 | +### 参考资料 |
| 192 | +[Solr官方文档](https://lucene.apache.org/solr/guide/7_3/solr-tutorial.html) |
0 commit comments