Solr分析器-Analyzers
2017-06-11 14:24
127 查看
作用:解析用户传递的搜索信息,抽取出关键字,然后进行过滤,最后去索引库检索,返回用户需要的信息,例如百度的关键字竞价机制
Solr分析器组成:分词器和过滤器
分词器:抽取关键字
过滤器:过滤关键字
Analyzers:分析器
作用:检查域的文本和生成token stream,分析器通过scheme.xml配置文件中的fieldType元素配置,
传统的搜索时全文匹配,分析器可以通过分析用户输入的文本字符抽取term(关键字),进行查询然后汇总结果,这样是的搜索引擎更加智能化
简单案例:schema.xml文件配置
复杂定义分析器:
注意:
org.apache.solr.analysis包里面的类可以直接被引用为solr.为前缀的类
例: solr.EnglishPorterFilterFactory 等价于
org.apache.solr.analysis. EnglishPorterFilterFactory
Analyzer会影响在给定Filed里面索引的term,但是不会影响其实际存储的值
Analysis Phases:分析阶段
分析发生在2种情况:
1.索引节点:
建立索引的时候Filed被创建时,语句分析生成的Token Stream被添加到索引并且TokenStream定义了Field的语句集
2.查询阶段:搜索的值被解析,并且匹配的结果语句集被保存在Field的索引
通常同样的分应用于index/query两个阶段,当进行准确的字符串匹配时效果令人满意,在其他的情况下索引和查询阶段可以轻微不同
多语句扩展分析:
一些情况下Analysis处理不是自然语言,像同义词、过滤的停止词Analysis Factory可以在进行这种类型的查询,例如小写处理,分析工厂典型MultiTermAwareComponent,当solr对多语句集的结果执行查询分析事,只有MultiTermAwareComponent能用于查询分析器中,其他的Factory会被忽略
分词器:Tokenizer
作用:分词器主要用于拆分文本流为Tokens,每个Token是文本流的一个子串,分析器直到solr配置的Field,但是Tokenizer不知道,因此分词器只是进行简单的拆分工作而已
中文分词器ikAnalyzer配置步骤:
1. 引入分词器jar包(ikAnalyzer2012_FF_u1)到lib目录中:solr/web-inf/lib
2. 复制IKAnalyzer的配置文件和自定义词典和停用词典到solr的classpath目录下
3. 配置fieldType指定使用中文分词器:注意analyzer和tokenizer的区分
4.配置Field使用ik分词器的fieldType
效果:
![](https://img-blog.csdn.net/20170611142212105?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZzE0NjQ2NTc2MjU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
注意:新版本的solr可能和IK分词器不兼容,需修改IK分词器源码
Solr分析器组成:分词器和过滤器
分词器:抽取关键字
过滤器:过滤关键字
Analyzers:分析器
作用:检查域的文本和生成token stream,分析器通过scheme.xml配置文件中的fieldType元素配置,
传统的搜索时全文匹配,分析器可以通过分析用户输入的文本字符抽取term(关键字),进行查询然后汇总结果,这样是的搜索引擎更加智能化
简单案例:schema.xml文件配置
<fieldType name="nametext" class="solr.TextField"> <analyzer class="org.apache.lucene.analysis.core.WhitespaceAnalyzer"/> </fieldType> 分析:为solr.TextField的域类型指定分析器
复杂定义分析器:
<fieldType name="nametext" class="solr.TextField"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StandardFilterFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory"/> <filter class="solr.EnglishPorterFilterFactory"/> </analyzer> </fieldType> 分析:Field的Text首先被传递给第一个solr.StandardTokenizerFactory,最后一个组件产生terms,词语,用于索引或查询nameText类型的field
注意:
org.apache.solr.analysis包里面的类可以直接被引用为solr.为前缀的类
例: solr.EnglishPorterFilterFactory 等价于
org.apache.solr.analysis. EnglishPorterFilterFactory
Analyzer会影响在给定Filed里面索引的term,但是不会影响其实际存储的值
Analysis Phases:分析阶段
分析发生在2种情况:
1.索引节点:
建立索引的时候Filed被创建时,语句分析生成的Token Stream被添加到索引并且TokenStream定义了Field的语句集
2.查询阶段:搜索的值被解析,并且匹配的结果语句集被保存在Field的索引
通常同样的分应用于index/query两个阶段,当进行准确的字符串匹配时效果令人满意,在其他的情况下索引和查询阶段可以轻微不同
多语句扩展分析:
一些情况下Analysis处理不是自然语言,像同义词、过滤的停止词Analysis Factory可以在进行这种类型的查询,例如小写处理,分析工厂典型MultiTermAwareComponent,当solr对多语句集的结果执行查询分析事,只有MultiTermAwareComponent能用于查询分析器中,其他的Factory会被忽略
<fieldType name="nametext" class="solr.TextField"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.KeepWordFilterFactory" words="keepwords.txt"/> <filter class="solr.SynonymFilterFactory" synonyms="syns.txt"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <!-- No analysis at all when doing queries that involved Multi-Term expansion --> <analyzer type="multiterm"> <tokenizer class="solr.KeywordTokenizerFactory" /> </analyzer> </fieldType>
分词器:Tokenizer
作用:分词器主要用于拆分文本流为Tokens,每个Token是文本流的一个子串,分析器直到solr配置的Field,但是Tokenizer不知道,因此分词器只是进行简单的拆分工作而已
中文分词器ikAnalyzer配置步骤:
1. 引入分词器jar包(ikAnalyzer2012_FF_u1)到lib目录中:solr/web-inf/lib
2. 复制IKAnalyzer的配置文件和自定义词典和停用词典到solr的classpath目录下
3. 配置fieldType指定使用中文分词器:注意analyzer和tokenizer的区分
<fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>
4.配置Field使用ik分词器的fieldType
<field name="title_ik" type="text_ik" indexed="true" stored="true"/> <field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true" />
效果:
注意:新版本的solr可能和IK分词器不兼容,需修改IK分词器源码
相关文章推荐
- Shiro学习之路 Hello Shiro(一)
- IPV4基本设置
- MySQL5.6多实例部署
- 虚拟化基础架构Windows 2008篇之9-配置Windows部署服务
- [游戏资讯]《极品飞车16:亡命狂飙》配置需求公布
- 配置文件神器 typesafe conf 用法简介
- 配置文件神器 typesafe conf 用法简介
- logback 配置详解(推荐)
- 路由器备份配置
- 路由器的基本配置
- 路由器基础配置及传输协议
- 经典配置 Vlan篇
- 备份线路的配置
- 交换机如何配置 新手配置交换机详细教程
- 如何进行系统配置
- 路由器的配置与调试
- DOS下内存的配置
- IIS配置文件隐患
- Windows下Postgresql数据库的下载与配置方法