设为首页 收藏本站
查看: 671|回复: 0

[经验分享] solr 中文分词filedType定义

[复制链接]

尚未签到

发表于 2016-12-15 07:09:44 | 显示全部楼层 |阅读模式
  一.   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.iyunv.com/blog/231293

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-314325-1-1.html 上篇帖子: Solr Data Import 快速入门 下篇帖子: solr安装和suggest
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表