当前位置: 代码迷 >> Web前端 >> solr 3.4配备中文分词IKAnalyzer3.2.8
  详细解决方案

solr 3.4配备中文分词IKAnalyzer3.2.8

热度:941   发布时间:2012-09-04 14:19:30.0
solr 3.4配置中文分词IKAnalyzer3.2.8

最近在折腾solr,现在需要让其支持中文分词,在网上看到了很多关于使用paoding中文分词的文章,但是测试很久都不行,而且paoding这个分词工具很久没更新了,最新版本是paoding-analysis-2.0.4-beta.zip,于是在想有没有其它的分词工具可以使用,后来找到了IKAnalyzer,仔细看了下,感觉很不错,关键是配置很容易,参照一篇文章中的例子http://blog.sina.com.cn/s/blog_722364920100v80u.html(在这里非常感谢这位楼主的文章),就跑起来了。在这里特意把其中关键的部分记载下来。

?

1、下载IKAnalyzer,并将其放置到solr/WEB-INF/lib目录下

IKAnalyzer 下载地址:http://code.google.com/p/ik-analyzer/downloads/detail?name=IKAnalyzer3.2.8%20bin.zip&can=2&q=

?

2、修改solr中conf目录中的schema.xml配置文件,添加如下内容:

?

?

<!-- IKAnalyzer3.2.8 中文分词-->
	<fieldType name="text" class="solr.TextField">
		<analyzer type="index">
			<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory"  isMaxWordLength="false"/>
				<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
                <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
        <analyzer type="query">
			<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="true"/>
				<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
                <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
                <filter class="solr.LowerCaseFilterFactory"/>
		</analyzer>   
    </fieldType>
?

如果采用上面的这种方式,那么相当于我们重新定义了一种fieldType,在后面的fields中需要把那些text_general修改为text,为了避免这种麻烦,我们可以修改原有的text_general类型:

找到fieldType name="text_general" ,修改其中的<tokenizer class="solr.StandardTokenizerFactory"/>为

<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="true"/>

这样就不需要修改后面的配置了。

?

3、测试

在浏览器中打开http://127.0.0.1:8080/solr/admin/analysis.jsp

在Field中选择type,在后面的输入框中输入text

在Field Value(Index)中输入:solr 中使用IKAnalyzer 中文分词

在Filed Value(Query)中输入:中文分词

最后点击Analyze,就会看到测试结果:


?

?

?

  相关解决方案