淘淘商城第42讲——配置IK Analyzer中文分析器

xiaoxiao2021-02-27  156

在Solr中默认是没有配置中文分析器的,需要我们手工进行配置,配置好之后,在哪儿会使用到它呢?当我们在配置一个FieldType时,就需要指定配置好的中文分析器了。另外,Solr中的字段(即业务域)必须先定义后使用。

下面我们先把中文分析器配置好,这儿我使用的中文分析器是IK Analyzer。

我们首先应下载IK Analyzer中文分析器,但是有小伙伴不知道怎么从网上下载,不过这也没有关系,为了照顾到我的读者,这里我给出了IK Analyzer中文分析器的百度网盘链接地址,你只要从这儿下载就可以了,我对你是不是可好了😂

链接:https://pan.baidu.com/s/1jN8_8k-YodnKO0gAyR6uAQ,提取码:rsuv

你下载下来之后,解压即可看到如下图所示的这些内容。 这里,我对以上IK Analyzer目录中的内容做一点小小的介绍。 下面我们要将IK Analyzer这个目录上传到Linux服务器上去,怎样将目录上传到Linux服务器上,我想我已经说的要吐了,所以这儿不再浪费口舌。与以往一样,我把IK Analyzer这个目录上传到了用户主目录(即root)下,如下图所示。 我们可以到IK Analyzer目录下查看都有哪些文件,如下图所示。 然后我们把中文分析器的核心jar包复制一份到solr工程中。 接着我们把IK Analyzer需要的扩展词典、停用词词典以及配置文件都复制到solr工程的classpath下,也即solr/WEB-INF/classes目录下。 温馨提示:WEB-INF下面的classes目录是需要我们手动建立的,若没有则请手动创建。还有,扩展词典及停用词词典的字符集必须是utf-8,它俩不能使用Windows记事本来编辑。

接下来,我们就需要配置FieldType了,它在哪儿进行配置呢?我们应在solrhome/core1/conf目录下的managed-schema文件中进行配置,我们先找到该文件,如下图所示。 然后编辑该文件,按下Shift+G直接到文件的末尾,继而添加如下内容:

<fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>

要实现商品搜索,我们还得配置业务域,在Solr中,这些业务域必须得先定义后使用,所以我们应该先定义业务域,如果要定义业务域,那么我们得先想想看要把哪些域导入到索引库中去。在淘淘商城这一项目的商品搜索功能当中,我们可能会用到如下一些字段,由于数据库tb_item表中id字段和Solr中的id域同名,因此我们便使用Solr的id域来代替商品id这个字段,也就是说,我们还需要在managed-schema文件中配置6个业务字段,最后,我们一共要向managed-schema文件中配置7个业务字段,它们分别是: 这样,我们在managed-schema文件的末尾添加的业务字段如下所示。

<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" />

配置业务域时,type指定使用自定义的FieldType。

我们配置完业务域之后,还要配置复制域,即还得在managed-schema文件的末尾添加复制域,如下所示,复制域的好处是可以提高查询效率,原来需要查询多个字段的,现在只需要查询一个字段就可以了(因为各个字段都把内容复制到一块儿了,查询也就方便了)。

<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服务器,重启之后,我们看看字段是否有我们刚才定义的几个,发现是有的,如下图所示。 下面我们来测试中文分词器是否可用,我们选择item_desc字段,然后在Field Value当中添加一段中文,接着点击Analyse Values按钮,就可以开始分析了,分析结果如下图所示。 可以看到,我们的中文分析器配置成功了。

转载请注明原文地址: https://www.6miu.com/read-13686.html

最新回复(0)