Solr(3.3)添加中文分词——以IK为例

1.       了解下载的solr

下载的Solr(3.3)包括以下几个包:


各个包具体有些什么,这里不细说,详见E:\nutch\nutch 项目文档总结\slor\开源企业搜索引擎SLOR应用教程.pdf

对于example,你可以通过运行start.jar来启动solr服务器。启动命令如下:java -Dsolr.solr.home=nutch -jar start.jar。-Dsolr.solr.home=nutch用来指定solrHome的,默认是example/solr。以上的命令则会将solr.home设为example/nutch。当然,要想使nutch作为solrHome,得先新建nutch文件夹,并将solr下的conf文件夹复制到nutch下。以后修改nutch下的conf中的schema.xml等内容即可。

2.       Schema.xml等文件的了解。

对于solr,重要的文件有schema.xml,solrconfig.xml。下面就来做大致的讲解。

(1)     schema.xml

 对于添加中文分词,了解schema.xml的配置是非常重要的。

 在schema.xml主要配置了一下内容:fieldType和fields。其中,fieldType是用来配置各种fieldType的类型的,fields则是配置建索引的每个域的名字,是否分词,是否存储的。在fieldType中就配置了你要使用的分词器(tokenizer)以及过滤器(filter)。例子如下:

  <fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100">对于这个元素及其属性,solr官网上解释的很详细,摘录如下:

A Solr schema.xml file allows two methods for specifying the way a text field is analyzed. (Normally only field types of solr.TextField will have Analyzers explicitly specified in the schema):

  1. Specifying the class name of an Analyzer — anything extending org.apache.lucene.analysis.Analyzer. 
    Example: 

  2. <fieldtype name="nametext" class="solr.TextField">
  3.   <analyzer class="org.apache.lucene.analysis.WhitespaceAnalyzer"/>

</fieldtype>

  1. Specifying a TokenizerFactory followed by a list of optional TokenFilterFactories that are applied in the listed order. Factories that can create the tokenizers or token filters are used to prepare configuration for the tokenizer or filter and avoid the overhead of creation via reflection. 
    Example: 

  2. <fieldtype name="text" class="solr.TextField">
  3.   <analyzer>
  4.     <charFilter class="solr.HTMLStripCharFilterFactory"/>
  5.     <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
  6.     <tokenizer class="solr.StandardTokenizerFactory"/>
  7.     <filter class="solr.LowerCaseFilterFactory"/>
  8.     <filter class="solr.StopFilterFactory"/>
  9.     <filter class="solr.PorterStemFilterFactory"/>
  10.   </analyzer>

</fieldtype>

从中可以看到,设置含有中文分词的field含有两种方式:一种通过<class>子元素指定,一种通过<tokenizer>子元素指定。

(详见:http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters

  在IK分词的下载包中,有个讲解的pdf教程,在这里面,对于如何将Ik分词添加到schema.xml,讲解的很详细,上面提及的两种方式都有。

  在schema中,配置好了fieldType后,配置fields,将索引的类型引用上面已配置的fieldType即可。

(2)     solrconfig.xml

在这个配置文件中,定义了所要加载的jar包路径,将jar包放到已存在的配置路径中,或者新建配置路径,即可在启动solr服务器时,加载所需的jar包。所以,只要将IK的jar包放到该配置文件的指定路径即可。

(3)     验证

上述两个步骤完成后,重启solr,在/admin/analysis.jsp页面中选择type为添加的分词的域,输入一段话,点analyze,即可看到分词效果。如图:



其它:

3》建议建立了一个拷贝字段,将所有的全文字段复制到一个字段中,以便进行统一的检索: 

Xml代码  

1.  <field name="all" type="text" indexed="true" stored="false" multiValued="true"/>  


并在拷贝字段结点处完成拷贝设置: 

Xml代码  

1.  <copyField source="name" dest="all"/>  

2.  <copyField source="summary" dest="all"/>  

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值