本文导读
- 了解完《Solr 4.10.3 schema.xml 域类型详解》之后,现在来配置 IK-Analyzer 中文分词器
- Solr 集成 IKAnalyzer 中文分析器步骤如下:
- 第一步:把 IKAnalyzer2012FF_u1.jar 添加到 solr/WEB-INF/lib 目录下。
- 第二步:复制 IKAnalyzer 的配置文件和自定义词典和停用词词典到 solr 的 classpath 下。
- 第三步:在 schema.xml 中添加一个自定义的 fieldType,使用中文分析器。
-
第四步:定义 field,指定 field 的 type 属性为 text_ik
复制 jar 包
- 将 IKAnalyzer2012FF_u1.jar 开发包添加到 Tomcat 服务器下的 webapps/solr/WEB-INF/lib 目录下。
- 关于 IK-Analyzer 不熟悉,或者没有开发包的,可以参考《 Lucene 中文分词器 Ik-Analyzer 使用教程》
设置扩展/停用词典
- 复制 IKAnalyzer 的配置文件和自定义词典和停用词词典到 Tomcat 下的 solr 应用的 classpath 下。
- 如果不使用扩展词典、停用词典,不做这一步操作也是没有问题的,对于扩展词典、停用词典不熟的可以参考《可以参考《 Lucene 中文分词器 Ik-Analyzer 使用教程》》
修改 schema. xml
- 在 schema.xml 中添加一个自定义的 fieldType,使用中文分析器。
- 自定义定义 Field,指定 Field 的 type 属性为 自定义的 FieldType。
- 如下所示,新加 FieldType 与 Field 到 schema.xml 文件的末尾。
<!--
<similarity class="com.example.solr.CustomSimilarityFactory">
<str name="paramkey">param value</str>
</similarity>
-->
<!-- IKAnalyzer-->
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
<!--IKAnalyzer Field-->
<field name="title_ik" type="text_ik" indexed="true" stored="true" multiValued="true"/>
<field name="content_ik" type="text_ik" indexed="true" stored="true" multiValued="true"/>
<field name="name_ik" type="text_ik" indexed="true" stored="true"/>
</schema>
分词测试
- 启动安装了 Solr 的 Tomcat 服务器,然后访问 Solr
- 输入测试的中文语句,然后选择新增的 IK-Analyzer 的 FieldType 或者 Field ,进行索引或者查询测试,结果如下,效果良好。
- 实际项目中数据仍然建议放入数据库中,如果需要使用大量的 “ like ” 进行模糊查询,应用数据量又大的话,这个时候可以使用“ 全文搜索引擎 ”进行优化,因为 模糊查询 数据库中使用的是全表扫描算法,效率太低。
- 如果上面设置了“扩展和停用词典”,则使用 Ik-Analyzer 的时候,就加载并使用它们,如下所示: