1、准备tomcat和solr
本文介绍的是在windows下部署solr,Linux环境和windows大同小异。
在tomcat官网下载apache-tomcat-8.5.29.zip和solr-7.3.1.zip并解压。我的解压路径为D:\dev\solr-7.3.1和D:\dev\apache-tomcat-8.5.29。
2、配置tomcat
-
将D:\dev\solr-7.3.1\server\solr-webapp\webapp拷贝到D:\dev\apache-tomcat-8.5.29\webapps中,重命名为solr。
-
将D:\dev\solr-7.3.1\server\lib中的jar包和D:\dev\solr-7.3.1\server\lib\ext中的所有jar包都拷贝到D:\dev\apache-tomcat-8.5.29\webapps\solr\WEB-INF\lib中。
-
在D:\dev\apache-tomcat-8.5.29下新建目录solrhome。将D:\dev\solr-7.3.1\example\example-DIH\solr\solr拷贝到solrhome中,并改名为account(这是solr的core,相当于一个数据库),将D:\dev\solr-7.3.1\server\solr中的solr.xml和zoo.cfg拷贝到solrhome中。编辑D:\dev\apache-tomcat-8.5.29\solrhome\account中的core.properties文件,加入
name=account
name可随意。编辑D:\dev\apache-tomcat-8.5.29\webapps\solr\WEB-INF中的web.xml,将
<!-- People who want to hardcode their "Solr Home" directly into the WAR File can set the JNDI property here... --> <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>D:\dev\apache-tomcat-8.5.29\solrhome</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
这段代码释放,配置好solrhome。
-
在D:\dev\apache-tomcat-8.5.29\webapps\solr\WEB-INF中新建classes文件夹,将D:\dev\solr-7.3.1\server\resources中的log4j.properties文件拷贝到里面。将D:\dev\solr-7.3.1\dist下的solr-dataimporthandler-7.3.1.jar和solr-dataimporthandler-extras-7.3.1.jar拷贝到D:\dev\apache-tomcat-8.5.29\webapps\solr\WEB-INF\lib中。
-
此时启动tomcat,访问http://localhost:8070/solr/index.html#/,发现403错误。将D:\dev\apache-tomcat-8.5.29\webapps\solr\WEB-INF中的web.xml中最底部的<auth-constraint/>注释掉。重新启动tomcat即可。
<!-- Get rid of error message --> <security-constraint> <web-resource-collection> <web-resource-name>Disable TRACE</web-resource-name> <url-pattern>/</url-pattern> <http-method>TRACE</http-method> </web-resource-collection> <!--<auth-constraint/>--> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>Enable everything but TRACE</web-resource-name> <url-pattern>/</url-pattern> <http-method-omission>TRACE</http-method-omission> </web-resource-collection> </security-constraint>
3、配置中文分词
3.2 配置solr自带的smartcn中文分词器。
-
将D:\dev\solr-7.3.1\contrib\analysis-extras\lucene-libs中的lucene-analyzers-smartcn-7.3.1.jar拷贝到D:\dev\apache-tomcat-8.5.29\webapps\solr\WEB-INF\lib中。
-
编辑D:\dev\apache-tomcat-8.5.29\solrhome\account\conf中的managed-schema,在最后添加以下代码。fieldType指的是字段类型,之后添加字段的时候需要用到这个。
然后重启tomcat。分词成功。 分词成功<!-- <similarity class="com.example.solr.CustomSimilarityFactory"> <str name="paramkey">param value</str> </similarity> --> <fieldType name="text_account" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/> </analyzer> </fieldType>
3.2配置mmseg4j分词器。
-
去maven仓库下载
mmseg4j-core-1.10.0.jar
和mmseg4j-solr-2.4.0.jar
,拷贝到D:\dev\apache-tomcat-8.5.29\webapps\solr\WEB-INF\lib中。(网上很多教程说要拷贝mmseg4j-analysis-1.9.0.jar,由于mmseg4j-solr-2.4.0.jar
中集成了该jar,所以不需要拷贝这个jar,如果拷贝了会报错。) -
在D:\dev\apache-tomcat-8.5.29\solrhome\account\conf中的managed-schema中添加如下配置。dicPath路径为
managed-schema
所在路径。<fieldType name="text_mmseg4j_complex" class="solr.TextField" positionIncrementGap="100" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="D:\dev\apache-tomcat-8.5.29\solrhome\account\conf"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> </analyzer> </fieldType> <fieldType name="text_mmseg4j_maxword" class="solr.TextField" positionIncrementGap="100" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="D:\dev\apache-tomcat-8.5.29\solrhome\account\conf"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> </analyzer> </fieldType> <fieldType name="text_mmseg4j_simple" class="solr.TextField" positionIncrementGap="100" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="D:\dev\apache-tomcat-8.5.29\solrhome\account\conf"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> </analyzer> </fieldType>
三种不同的字段分词类型有不同的效果,具体不同可自行尝试。
网友评论