学习淘淘商城第三十七课(中文分析器IK-Analyzer的使用)

来源:互联网 发布:c语言界面设计 编辑:程序博客网 时间:2024/05/27 20:12

      在Solr中默认是没有中文分析器的,需要手工配置,配置一个FieldType,在FieldType中指定中文分析器。另外,Solr中的字段必须先定义,后使用。

      下面分步骤进行操作

第一步:将IK-Analyzer的压缩包上传到solr服务器上。如下所示。

[root@solr-server software]# ll总用量 335576drwxr-xr-x. 9 root root      4096 4月  30 05:51 apache-tomcat-7.0.47-rw-r--r--. 1 root root   8234674 3月  15 01:22 apache-tomcat-7.0.47.tar.gz-rw-r--r--. 1 root root   2159463 1月  15 19:46 IKAnalyzer2012FF_hf1.zip-rw-r--r--. 1 root root 183212596 4月   2 10:51 jdk-8u112-linux-x64.gz-rw-r--r--. 1 root root 150010621 3月  15 01:20 solr-4.10.3.tgz.tgz[root@solr-server software]# 
第二步:安装zip和unzip命令(因为最小化安装的CentOS6没有unzip命令)

[root@solr-server software]# yum install zip unzip

第三步:解压,如下所示

[root@solr-server software]# unzip IKAnalyzer2012FF_hf1.zip
[root@solr-server software]# ll总用量 335580drwxr-xr-x. 9 root root      4096 4月  30 05:51 apache-tomcat-7.0.47-rw-r--r--. 1 root root   8234674 3月  15 01:22 apache-tomcat-7.0.47.tar.gzdrwxr-xr-x. 3 root root      4096 10月  2 2015 IKAnalyzer2012FF_hf1-rw-r--r--. 1 root root   2159463 1月  15 19:46 IKAnalyzer2012FF_hf1.zip-rw-r--r--. 1 root root 183212596 4月   2 10:51 jdk-8u112-linux-x64.gz-rw-r--r--. 1 root root 150010621 3月  15 01:20 solr-4.10.3.tgz.tgz[root@solr-server software]# 

       解压完后,我们到IKAnalyzer2012FF_hf1目录下查看都有哪些文件,如下所示。其中doc当然是文档了;ext_stopword.dic是停用词词典(在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为Stop Words(停用词)。这些停用词都是人工输入、非自动化生成的,生成后的停用词会形成一个停用词表。但是,并没有一个明确的停用词表能够适用于所有的工具。甚至有一些工具是明确地避免使用停用词来支持短语搜索的。)IKAnalyzer.cfg.xml是配置文件,mydict.dic是扩展词典。IKAnalyzer2012FF_u1.jar是核心包。

[root@solr-server software]# cd IKAnalyzer2012FF_hf1[root@solr-server IKAnalyzer2012FF_hf1]# ll总用量 2004drwxr-xr-x. 5 root root    4096 10月  2 2015 doc-rw-r--r--. 1 root root     168 9月  11 2015 ext_stopword.dic-rw-r--r--. 1 root root 1165908 9月  11 2015 IKAnalyzer2012FF_u1.jar-rw-r--r--. 1 root root     419 9月  11 2015 IKAnalyzer.cfg.xml-rw-r--r--. 1 root root  841268 9月  11 2015 IKAnalyzer中文分词器V2012_FF使用手册.pdf-rw-r--r--. 1 root root   17778 9月  11 2015 LICENSE.txt-rw-r--r--. 1 root root      12 9月  11 2015 mydict.dic-rw-r--r--. 1 root root     278 9月  11 2015 NOTICE.txt[root@solr-server IKAnalyzer2012FF_hf1]#
第四步:把分析器的jar包添加到solr工程中

[root@solr-server IKAnalyzer2012FF_hf1]# cp IKAnalyzer2012FF_u1.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/[root@solr-server IKAnalyzer2012FF_hf1]# 

第五步:把IKAnalyzer需要的扩展词典及停用词词典、配置文件复制到solr工程的classpath。

       我们需要先在/usr/local/solr/tomcat/webapps/solr/WEB-INF/目录下创建classes目录,如下所示。

[root@solr-server IKAnalyzer2012FF_hf1]# mkdir /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes[root@solr-server IKAnalyzer2012FF_hf1]# 

        下面就是copy操作,如下所示。

[root@solr-server IKAnalyzer2012FF_hf1]# cp IKAnalyzer.cfg.xml ext_stopword.dic mydict.dic /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes[root@solr-server IKAnalyzer2012FF_hf1]#

        注意:扩展词典及停用词词典的字符集必须是utf-8。不能使用windows记事本编辑。

第六步:配置fieldType。

      需要在solrhome/collection1/conf/schema.xml中配置,我们先到schema.xml所在的目录,如下所示。

[root@solr-server IKAnalyzer2012FF_hf1]# cd /usr/local/solr/solrhome/collection1/conf[root@solr-server conf]# ll总用量 292-rw-r--r--. 1 root root  1068 4月  30 05:58 admin-extra.html-rw-r--r--. 1 root root   928 4月  30 05:58 admin-extra.menu-bottom.html-rw-r--r--. 1 root root   926 4月  30 05:58 admin-extra.menu-top.htmldrwxr-xr-x. 3 root root  4096 4月  30 05:58 clustering-rw-r--r--. 1 root root  3974 4月  30 05:58 currency.xml-rw-r--r--. 1 root root  1348 4月  30 05:58 elevate.xmldrwxr-xr-x. 2 root root  4096 4月  30 05:58 lang-rw-r--r--. 1 root root 78514 4月  30 05:58 mapping-FoldToASCII.txt-rw-r--r--. 1 root root  2868 4月  30 05:58 mapping-ISOLatin1Accent.txt-rw-r--r--. 1 root root   873 4月  30 05:58 protwords.txt-rw-r--r--. 1 root root    33 4月  30 05:58 _rest_managed.json-rw-r--r--. 1 root root   450 4月  30 05:58 _schema_analysis_stopwords_english.json-rw-r--r--. 1 root root   172 4月  30 05:58 _schema_analysis_synonyms_english.json-rw-r--r--. 1 root root 60689 4月  30 05:58 schema.xml-rw-r--r--. 1 root root   921 4月  30 05:58 scripts.conf-rw-r--r--. 1 root root 74827 4月  30 05:58 solrconfig.xml-rw-r--r--. 1 root root    13 4月  30 05:58 spellings.txt-rw-r--r--. 1 root root   781 4月  30 05:58 stopwords.txt-rw-r--r--. 1 root root  1119 4月  30 05:58 synonyms.txt-rw-r--r--. 1 root root  1416 4月  30 05:58 update-script.jsdrwxr-xr-x. 2 root root  4096 4月  30 05:58 velocitydrwxr-xr-x. 2 root root  4096 4月  30 05:58 xslt[root@solr-server conf]# 
       编辑schema.xml,使用Shift+G就可以直接到文件的末尾,然后添加如下内容

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

第七步:业务字段配置

       在淘淘商城的商品搜索功能当中,我们可能用到的字段如下,由于数据库中id字段和solr中的id同名,我们便使用solr的id代替商品id。也就是说,我们需要配置6个业务字段。

1、商品id2、商品title3、卖点4、价格5、商品图片6、商品分类名称7、商品描述

      在schema.xml的末尾添加的业务字段如下所示。

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

第八步:配置复制域

      在schema.xml的末尾添加复制域,如下所示,复制域的好处是可以提高查询效率,原来需要查询多个字段的,现在只需要查询一个字段就可以了(因为各个字段都把内容复制到一块儿了,查询也就方便了)

<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的命令如下。

[root@solr-server tomcat]# bin/shutdown.sh
      启动

[root@solr-server tomcat]# bin/startup.sh

        重启之后,我们看看字段是否有我们刚才定义的几个,发现是有的,如下图所示。

      下面我们来测试中文分词器是否可用,我们选择item_desc字段,我们在Field Value当中添加一段中文,然后点击"Analyse Values"按钮,就可以开始分析了,分析结果如下。可以看到,我们的中文分析器配置成功了。









      

0 0
原创粉丝点击