在Solr中默认是没有中文分析器的,需要手工配置,配置一个FieldType,在FieldType中指定使用的中文分析器。另外,Solr中的字段(即业务域)必须先定义后使用。下面我们先把中文分析器配好,这儿使用的中文分析器是IK Analyzer。 
我们首先应下载IK Analyzer中文分析器,下面是我所下载的IK Analyzer。 

接着要将IK
Analyzer
2012FF_hf1目录上传到Linux系统上去,怎样将目录上传到Linux系统上,我想我已经说的要吐了,所以这儿不再浪费口舌。与以往一样,我把IK
Analyzer 2012FF_hf1目录上传到了用户主目录(即root)下,如下图所示。 

我们可以到IK Analyzer 2012FF_hf1目录下查看都有哪些文件,如下图所示。 

  • doc:IK Analyzer的文档。
  • ext_stopword.dic:停用词词典。在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为Stop

    Words(停用词)。这些停用词都是人工输入、非自动化生成的,生成后的停用词会形成一个停用词表。但是,并没有一个明确的停用词表能够适用于所有的工具,甚至有一些工具是明确地避免使用停用词来支持短语搜索的。

  • IKAnalyzer.cfg.xml:配置文件。
  • mydict.dic:扩展词典。
  • IKAnalyzer2012FF_u1.jar:核心包。

我们接下来把中文分析器的jar包添加到solr工程中。 

紧接着我们需要先在/usr/local/solr/tomcat/webapps/solr/WEB-INF目录下创建一个classes目录,然后把IK Analyzer需要的扩展词典及停用词词典、配置文件复制到solr工程的classpath下。 

注意:扩展词典及停用词词典的字符集必须是utf-8,不能使用windows记事本编辑。 
下面我们需要配置FieldType,在哪儿进行配置呢?我们应在solrhome/collection1/conf/schema.xml中配置,我们先到schema.xml所在的目录,如下图所示。 

然后编辑schema.xml,使用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,也就是说,我们还需要在schema.xml文件中配置6个业务字段,最后,我们一共要向schema.xml文件中配置7个业务字段,它们分别是:
1、商品Id
2、商品标题
3、商品卖点
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" />

配置业务域时,type指定使用自定义的FieldType。 
我们配置完业务域后,还要配置复制域,即在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,重启之后,我们看看字段是否有我们刚才定义的几个,发现是有的,如下图所示。 

下面我们来测试中文分词器是否可用,我们选择item_desc字段,我们在Field Value当中添加一段中文,然后点击”Analyse Values”按钮,就可以开始分析了,分析结果如下图所示。 

可以看到,我们的中文分析器配置成功了。

(转)淘淘商城系列——中文分析器IK-Analyzer的使用的更多相关文章

  1. solr创建业务域以及指定中文分析器IK

    第一步:把中文分析器添加到工程中. 1.把IKAnalyzer2012FF_u1.jar添加到solr工程的lib目录下 2.把扩展词典.配置文件放到solr工程的WEB-INF/classes目录下 ...

  2. (转) 淘淘商城系列——CMS内容管理系统工程搭建

    http://blog.csdn.net/yerenyuan_pku/article/details/72825801 淘淘商城系列——CMS内容管理系统工程搭建 上文我们一起搭建了表现层中的商城门户 ...

  3. (转) 淘淘商城系列——使用FastDFS-Client客户端进行上传图片的测试

    http://blog.csdn.net/yerenyuan_pku/article/details/72804018 不久之前,我们实现了商品的类目选择这个功能,但这只是万里长征的第一步,我们还有很 ...

  4. (转)淘淘商城系列——分布式文件系统FastDFS

    http://blog.csdn.net/yerenyuan_pku/article/details/72801777 商品添加的实现,包括商品的类目选择,即商品属于哪个分类?还包括图片上传,对于图片 ...

  5. (转) 淘淘商城系列——Redis集群的搭建

    http://blog.csdn.net/yerenyuan_pku/article/details/72860432 本文我将带领大家如何搭建Redis集群.首先说一下,为何要搭建Redis集群.R ...

  6. (转)淘淘商城系列——使用maven tomcat插件启动聚合工程

    http://blog.csdn.net/yerenyuan_pku/article/details/72672389 上文我们一起学习了如何使用maven tomcat插件来启动web工程,本文我们 ...

  7. (转)淘淘商城系列——使用maven构建工程

    http://blog.csdn.net/yerenyuan_pku/article/details/72669269 开发工具和环境 这里,我统一规范一下淘淘商城的开发工具和环境,如下: Eclip ...

  8. (转)淘淘商城系列——KindEditor富文本编辑器的使用

    http://blog.csdn.net/yerenyuan_pku/article/details/72809794 通过上文的学习,我们知道了怎样解决KindEditor富文本编辑器上传图片时的浏 ...

  9. (转) 淘淘商城系列——解决KindEditor上传图片浏览器兼容性问题

    http://blog.csdn.net/yerenyuan_pku/article/details/72808229 上文我们已实现了图片上传功能,但是有个问题,那就是对浏览器兼容性不够,因为Map ...

随机推荐

  1. 接Window服务(二)

    接Window服务(一) ServiceController方法调用 1 public partial class Service1 : ServiceBase 2 { 3 public Servic ...

  2. idea中maven依赖不能下载的解决办法

    使用maven 命令 maven install 在项目所在文件夹 执行.

  3. 【C#/WPF】Button按钮动态设置Background背景颜色

    学习笔记: 在XAML中给Button设置颜色大家都懂的,本篇只是记录用C#代码动态生成的按钮设置Background背景颜色. new一个Button,设置Background时可看到该属性类型是S ...

  4. 【jQueryEasyUI总结】

    API: EASYUI 实例项目(重要): 社区easyui 论坛: http://bbs.jeasyuicn.com API地址:http://www.jeasyuicn.com/api SSH演示 ...

  5. e575. The Quintessential Drawing Program

    To draw on the screen, it is first necessary to subclass a JComponent and override its paint() metho ...

  6. FFmpeg在Android上的移植优化步骤

    http://blog.csdn.net/feixiang_john/article/details/7894188 从事多媒体软件开发的人几乎没有不知道FFmpeg的,很多视频播放器都是基于FFmp ...

  7. c网络编程-多播

    /* 编译通过环境,Windows XP sp2,Windows 2003 server SDK,VC++6.0 sp5. */ /********************************** ...

  8. Unity简介

    Unity (也称 nity3D) 是一套包括图形. 声音.物理等功能的游戏引擎,提供了一个强大的关卡编辑器,支持大部分主流 3D 软件格式,使用 C# JavaScript 等高级语言实现脚本功能, ...

  9. 记js的一个奇葩问题!!!!!!!!!!!!

    <a id='gc-yl' onclick='Preview('" + imgPath + "')' style='margin-left:5px;' >预览</ ...

  10. iOS 图文混排 (Swift版)

    // 0> 图片附件 let attachment = NSTextAttachment() attachment.image = #imageLiteral(resourceName: &qu ...