- <field name="id" type="string" indexed="true" stored="true" required="true" />
- <field name="ant_title" type="textComplex" indexed="true" stored="true" />
- <field name="ant_content" type="textComplex" indexed="true" stored="true" />
-
<field name="all" type="textComplex" indexed="true" stored="false" multiValued="true"/>
- <field name="all" type="textComplex" indexed="true" stored="false" multiValued="true"/>
- <copyField source="ant_title" dest="all"/>
- <copyField source="ant_content" dest="all"/>
下面就来看一下中文分词吧,这里用的分词是IK Analyzer 2012。
中文分词
1 <!-- IKAnalyzer2012 --> 2 <fieldType name="text_ika" class="solr.TextField"> 3 <analyzer type="index" positionIncrementGap="100" autoGeneratePhraseQueries="true"> 4 <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="false"/> 5 <!-- <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> --> 6 <!-- <filter class="solr.LowerCaseFilterFactory"/> --> 7 </analyzer> 8 <analyzer type="query"> 9 <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="true" /> 10 <!-- <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> --> 11 <!-- <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> --> 12 <!-- <filter class="solr.LowerCaseFilterFactory"/> --> 13 </analyzer> 14 </fieldType>
分词用的依旧是fieldType,为的是在下面的field中能够用到。
有两个analyzer,一个是index,一个是query,index是针对于所有,query是针对于搜索。
可以看到我注掉了两个filter,为什么呢。
先说简单的吧,一个是query中的同义词Filter,solr.SynonymFilterFactory,注掉他是因为当前没有一个庞大的词库能够支撑中文如此复杂的同义词量。
另外一个是忽略大小写的Filter,这个Filter可以根据自己的需要进行添加或删除,在我们的系统中,主要处理中文,这个用处也不大。
还有一个注掉的Filter是停词Filter,这个用处挺大的,为什么注掉呢?因为我感觉他在这里不太合适。
解释一下:停词组件在中文分词中很重要,IK也提供了相对应的配置方法,不仅仅可以处理停词,而且还可以自定义词库。所以,我建议将停词在IK中配置而不是在schema.xml中。
两种方法都说一下:
第一种:在schema.xml中配置,不要注释stopword组件,并将停词文件拷贝至solrHome/core/conf目录下(注意文件的编码方式,至少保证文本文件是UTF-8格式,更加严格的,保证文本文件是无BOM格式的UTF-8编码)。
第二种:在IK配置文件中配置,请下载一个IK分词组件,里面会有一个IKAnalyzer.cfg.xml的配置文件,拷贝到solr项目的源代码根目录下,并将stopword.dic也拷贝到根目录下,如下图所示:
记得要导入IK的Jar包,这样,在你的文件中就可以使用IK提供的中文分词了。
给一个我用的stopword.dic,去下载。
IK也可以自定义词库,这个可以看一下IK的文档,很简单,将你的自定义词库的文件拷贝至根目录,并在IK配置文件中配置即可。
(注意IK Solr4.0配置)
这里特别的罗嗦几句,在Solr4.0发布以后,官方取消了BaseTokenizerFactory接口,而直接使用Lucene Analyzer标准接口。因此IK分词器2012 FF版本也取消了org.wltea.analyzer.solr.IKTokenizerFactory类。
4.1 solr4.0配置样例
使用IKAnalyzer的配置
<fieldType name="text" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
相关推荐
IKAnalyzer中文分词器本身已经不支持最新的solr 5,集成到solr中分词会报错,这里将解决了solr 5支持问题的最新IK包共享出来,希望能帮到各位! 附上IK在schema.xml中的配置: <fieldType name="text_ik" class=...
使用IK分词器,应为该集群使用到的solr版本为4.10.3-cdh5.7.5,所以使用的 IK 包为IKAnalyzer2012FF_u1.jar,如果是3x的solr,使用IKAnalyzer2012_u6.jar 具体操作如下: 引用 1.在/opt/cloudera/parcels/CDH/lib/...
使用IK分词器,应为该集群使用到的solr版本为4.10.3-cdh5.7.5,所以使用的 IK 包为IKAnalyzer2012FF_u1.jar,如果是3x的solr,使用IKAnalyzer2012_u6.jar solr-4.10.3下载地址:...
2. 引入分词器的jar文件:在`server/solr/RD-Product/conf/solrconfig.xml`中配置如下信息,将`rd-lib`这个文件夹下的所有jar包引入到服务中。 <!-- 引入"contrib/rd-lib/"下所有jar文件 --> ${solr.install.dir:../...
通过继承Analyzer编写自定义类UseSmartIKAnalyzer和NotUseSmartIKAnalyzer,实现智能分词和最细粒度分词,支持solr4.7通过配置schema.xml实现不同的分词效果 <fieldType name="text_ik" class="solr.TextField"> ...
solr-ik中文分词器资源包,包括ext.dic,,IKAnalyzer.cfg.xml,,ik-analyzer-solr5-5.x.jar,,managed-schema,,solr-analyzer-ik-5.1.0.jar,,stopword.dic solr-ik分词 solr中文分词 ik分词资源
ik-analyzer.jar的类库和schema.xml配置
在solrcode的schema.xml文件中的配置如下: 配置中文分词器的fieldType: <fieldType name="text_ik" class="solr.TextField"> <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene....
2、将IKAnalyzer.cfg.xml、stopword.dic拷贝到需要使用分词器的core的conf(盘符:\solr\server\solr\WEB-INF\classes)下面(注意:如果没有classe文件夹自己创建一个classes文件夹,方便配置自己的定义的词库) ...
solr-ik中文分词器资源包,包括ext.dic,,IKAnalyzer.cfg.xml,,ik-analyzer-solr5-5.x.jar,,managed-schema,,solr-analyzer-ik-5.1.0.jar,,stopword.dic
① IKAnalyzer.cfg.xml ② ext.dic ③ stopword.dic ④ ik.conf ⑤ dynamicdic.txt 3. 配置Solr的`managed-schema`,添加`ik分词器`,示例如下; ```console <!-- ik分词器 --> ...
另:为了方便自定义ik-analyzer的设置,可以把ik-analyzer-8.3.0.jar中的配置文件 也复制过来 cp -r ik-analyzer-8.3.1/* ../solr/WEB-INF/classes 2、修改/usr/local/solrhome/test_core目录中的managed-schema...
包括solr的所有资源文件文件...IKAnalyzer.cfg.xml ik-analyzer-solr5-5.x.jar solr-analyzer-ik-5.1.0.jar managed-schema mysql-connector-java-5.1.7-bin.jar solrconfig.xml data-config.xml ext.dic stopword.dic
支持Spring-data-solr1.5的ik分词器,并且修改了代码,添加一个新的类,用于支持同义词,目前可以同时支持分词和同义词的功能。 修改 managed-schema,添加 <fieldType name="text_lk" class="solr.TextField"> ...
solr7以前的版本对于中文分词支持不好,通常会用IK分词器。对于solr7,可以直接使用提供的分词器。 二、solr7中文分词器使用步骤 1、复制lucene-analyzers-smartcn-7.2.0.jar(在contrib/analysis-extras/lucene-...