一、把中文分析器添加到工程中
- 这里的前提是已经将Solr装配到tomcat中
- 下载地址:https://pan.baidu.com/s/1n4OpAx-8hERTK2y1qjIt_w
- 将解压的文件上传到Linux中
- 打开上图的文件,找到如下图所示的一个文件,将这个文件配置到如下的目录中
- 还在上述的目录中的一个jar包放到如下图的路径中
- 进入solr-7.2.1\server\solr\articles\conf目录,用记事本或其他文本编辑器打开managed-schema文件,在截图中的位置添加如下代码【定义数据类型:配置一个FieldType,制定使用IKAnalyzer】
<!--配置了一个最简单的中文分析器--> <fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>
- 重启Tomcat
- 打开网页:http://localhost:8080/solr/index.html
- 到这里中文分析器就配置好了
二、配置自定义业务域
- 需要拷贝一些Solr中的jar包到Tomcat中
cp /root/solr-7.2.0/dist/solr-dataimporthandler-7.2.0.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/ cp /root/solr-7.2.0/contrib/analysis-extras/lucene-libs/* /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/
- 进入/usr/local/solr/solrhome/new_core/conf/managed-schema
- 并且添加TypeField
<!--可以使用最简单的中文分析器--> <!--配置了一个最简单的中文分析器--> <fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> <!--也可以对中文分析器进行配置--> <!--配置中文分析器--> <!-- ChineseAnalyzer: 分析器一般出现在2个环境:建索引(index)和查询(query),大多数情况下这2个场景的分析过程都是一样,也就是说用的是相同的分析器。但是,你仍然可以为2个不同的阶段指字不同的分析器: --> <fieldType name="text_ik" 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>
- 还要添加业务域
<!--业务域--> <field name="item_title" type="text_ik" indexed="true" stored="true"/> <field name="item_sell_point" type="text_ik" indexed="true" stored="true"/> <field name="item_price" type="plong" indexed="true" stored="true"/> <field name="item_image" type="string" indexed="false" stored="true" /> <field name="item_category_name" type="string" indexed="true" stored="true" /> <field name="item_desc" type="text_ik" indexed="true" stored="false" /> <!--复制域:当我们向业务域添加数据的时候,它会自动把添加的数据复制到item——keywords上。 本质上是对搜索的一个优化,把这些域都复制到keywords上,我们可以直接搜索keywords,只要在复制域包 含关键字,那么都能给你找出来 --> <field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/> <copyField source="item_title" dest="item_keywords"/> <copyField source="item_sell_point" dest="item_keywords"/> <copyField source="item_category_name" dest="item_keywords"/> <copyField source="item_desc" dest="item_keywords"/>
- 重启Tomcat
#关闭Tomcat的命令 /usr/local/solr/tomcat/bin/shutdown.sh # 开启tomcat的命令 /usr/local/solr/tomcat/bin/startup.sh