一. solr.TextField 允许用户通过 分析器 来定制 索引和查询 的 fieldType。
分析器包括 一个分词器(tokenizer)和多个过滤器(filter)。
代码展示:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<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.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
</analyzer>
<analyzer type="query">
<tokenizer class = "org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="true" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords.txt"
enablePositionIncrements="true"
/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
</analyzer>
</fieldType>
二. Solr建立索引 和 对关键词进行查询 都得对字串进行分词。
在向索引库中添加全文检索类型的索引的时候,Solr会首先用空格进行分词,然后把分词结果依次使用指定的过滤器进行过滤,最后剩下的结果才会加入到索引库中以备查询。
分词的顺序如下:
索引
1:空格whitespaceTokenize
2:过滤词StopFilter
3:拆字WordDelimiterFilter
4:小写过滤LowerCaseFilter
5:英文相近词EnglishPorterFilter
6:去除重复词RemoveDuplicatesTokenFilter
查询
1:查询相近词
2:过滤词
3:拆字
4:小写过滤
5:英文相近词
6:去除重复词
以上是针对英文,中文的除了空格,其他都类似。但具体是什么样子,需要看对应的 fieldType中的配置。
如 1. 中的配置
索引:
1. IK分词
2. 停用词过滤
3. 拆字
4. 小写过滤
5. 关于不同语言的词干处理
查询:
1. IK分词
2. 同义词
3. 停用词
4. 拆字
5. 小写过滤
6. 关于不同语言的词干处理
三. 常用分词器与过滤器介绍
分词器:
1. < tokenizer class =" solr.WhitespaceTokenizerFactory " />
空格分词器
2. <tokenizer class = "org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="false" />
IK分词器
过滤器
1. <filter class ="solr.WordDelimiterFilterFactory" generateWordParts ="1" generateNumberParts ="1" catenateWords ="1" catenateNumbers ="1" catenateAll="0" splitOnCaseChange="1" />
在分词和匹配时,考虑"-"连字符,字母数字的界限,非字母数字字符,这样 "wifi"或"wi fi"都能匹配"Wi-Fi"。
2. <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
同义词,同义词的构建一定要参考 http://ip:8983/solr/admin/analysis.jsp 页面的分词效果。
3. <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
在禁用字(stopword)删除后,在短语间增加间隔
stopword:即在建立索引过程中(建立索引和搜索)被忽略的词,比如is this等常用词。
在conf/stopwords.txt维护。
4. 其它 参见 http://damoqingquan.iteye.com/blog/231293
分享到:
相关推荐
solr中文分词jar包ik-analyzer 含class配置 ik-analyzer-7.5.0
solr中文分词器
solr 中文分词
solr安装ik分词器将jar复制到solr\WEB-INF\lib 中 具体使用:https://mp.csdn.net/postedit
由于网上提供的solr中文分词器大多不吃吃6.5以上,会报错(具体错误提示忘了),这里提供高版本,内含使用教程
solr搜索框架的中文分词器文件及配置详解供大家下载,亲测可用.解压出来的jar包放到apache-tomcat-9.0.20\webapps\solr\WEB-INF\lib下(Tomcat项目里solr项目)其他三个文件放到apache-tomcat-9.0.20\webapps\solr\...
solr中文分词器 IKAnalyzer 支持solr版本5.x到7.x 亲测可用,我用的是7.2版本
中文分词技术(中文分词原理)词是最小的能够独立活动的有意义的语言成分,英文单词之间是以空格作为自然分界符的,而汉语是以字为基本的书写单位,词语之间没有明显的区分标记,因此,中文词语分析是中文信息处理的...
包含内容:IKAnalyzer中文分词器V2012使用手册.pdf;机械词汇大全【官方推荐】;深蓝词库转换.exe;中文分词词库打包50万词汇;IKAnalyzer-5.0.jar
solr cloud6.x.x 都可以用,solr的拼音分词
solr 中文查询分词器,把一串字符分作多个词语进行查询
该分词器支持solr7.x
solr 源码 + IK 分词器 + zookeeper。
solr5 中文分词
solr分词 IKAnalyzer2012FF_hf1.rar,solr中文分词搜索
Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一...
solr7.3.1种需要的中文IK分词器,其中包括IK分词的jar和配置文件还有mmseg4j
solr6.0中IK分词需要的资料,用Ik只需要将相关的配置放入到solr中,即可