`
damoqingquan
  • 浏览: 48474 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

solr 的分析器,分词器和分词过滤器(1)

阅读更多

【本文基于对此英文网页的理解http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters

 

 概览

    当对一个文档(document是一系列field的集合)进行索引时,其中的每个fielddocumentfile都是lucene中的概念)中的数据都会经历分析,分词和多步的分词过滤等操作。这一系列的动作是什么呢?直观的理解是,将一句话分成单个的单词,去掉句子当中的空白符号,去掉多余的词,进行同义词代换等等。

  【例】what a beautiful day? 会进行什么处理呢?what ,a 以及问号都将被去掉,最后处理结果为beautifulday(也有可能是beautiful day)

  不仅仅是在索引的时候进行这些工作,查询的时候也要做这些工作,而且通常索引和查询使用同样的方法来进行处理。这样做的目的是为了保证索引与查询的正确匹配。下例说明了采取不同的处理时的不匹配情况。

  【例】ABCD索引分词为AB  CD,查询时候分词为ABC  D,显然查询的匹配结果为0

 

词性转换

  一种是将一个词扩展成它的多种形式,例如将run扩展成runsrunning。另外一种是词性规约,例如将runnsrunning等都收缩run。前者只需要在索引或查询的任意一端采用即可,后者需要在两端同时采用。

 

分析器(Analyzer

  分析器是包括连个部分:分词器和过滤器。分词器顾名思意就是将句子分词单个的词,过滤器就是对分词的结果进行筛选,例如中文中将”“这些对句子主体意思影响不大的词删除。英语中类似的就是"is""a"等等。通常在索引和分词两端应该采用同样的分词器。solr自带了一些分词器,如果你需要使用自己公司的分词器,那么就需要修改solr模式(Solr schema)。

    schema.xml 文件允许两种方式修改文本被分析的方式,通常只有field类型为 solr.TextField field的内容允许定制分析器。

    方法一:使用任何 org.apache.lucene.analysis.Analyzer的子类进行设定。

1.  fieldtype name="nametext" class="solr.TextField">

2.   <analyzer class="org.apache.lucene.analysis.WhitespaceAnalyzer"/>

3. </fieldtype>

    方法二:指定一个TokenizerFactory ,后面跟一系列的TokenFilterFactories(它们将按照所列的顺序发生作用),Factories被用来创建分词器和分词过滤器,它们用于对分词器和分词过滤器的准备配置,这样做的目的是为了避免the overhead of creation via reflection

  

1. <fieldtype name="text" class="solr.TextField">

2.   <analyzer>

3.     <tokenizer class="solr.StandardTokenizerFactory"/>

4.     <filter class="solr.StandardFilterFactory"/>

5.     <filter class="solr.LowerCaseFilterFactory"/>

6.     <filter class="solr.StopFilterFactory"/>

7.     <filter class="solr.PorterStemFilterFactory"/>

8.   </analyzer>

9. </fieldtype>

  需要说明的一点是,Any Analyzer, TokenizerFactory, or TokenFilterFactory 应该用带包名的全类名进行指定,请确保它们位于Solrclasspath 路径下。对于 org.apache.solr.analysis.* 包下的类,仅仅通过solr.*就可以进行指定。

   如果你需要使用自己的分词器和过滤器,你就需要自己写一个 factory ,它必须是 BaseTokenizerFactory BaseTokenFilterFactory的子类。就像下面一样。

  public class MyCustomFilterFactory extends BaseTokenFilterFactory {

  public TokenStream create(TokenStream input) {

    return new MyCustomFilter(input);

  }

}

 

 

 

Solr提供了哪些TokenizerFactories

--------------------------------------------------------------------

1.  solr.LetterTokenizerFactory

   创建org.apache.lucene.analysis.LetterTokenizer.

   分词举例:

   "I can't" ==> "I", "can", "t"

2.  solr.WhitespaceTokenizerFactory

   创建org.apache.lucene.analysis.WhitespaceTokenizer

3.  solr.LowerCaseTokenizerFactory

   创建org.apache.lucene.analysis.LowerCaseTokenizer

   分词举例:

  "I can't" ==> "i", "can", "t"

4.  solr.StandardTokenizerFactory

   创建org.apache.lucene.analysis.standard.StandardTokenizer

   分词举例:  "I.B.M. cat's can't" ==> 

ACRONYM: "I.B.M.", APOSTROPHE:"cat's", APOSTROPHE:"can't"

   说明:该分词器,会自动地给每个分词添加type,以便接下来的对type敏感的过滤器进行处理,目前仅仅只有StandardFilterToken的类型是敏感的。

声明:原创文章,严禁转载。

分享到:
评论

相关推荐

    solr ik分词器

    -- 同上,也可以添加其他查询分析器过滤器 --&gt; ``` 这里,我们定义了一个名为`text_ik`的字段类型,使用了`HMMChineseTokenizerFactory`,这是一种基于隐马尔科夫模型(HMM)的中文分词器。 5. **更新字段...

    solr中文分词器

    Solr的核心功能是建立索引和执行查询,通过插件机制,可以灵活地扩展各种分析器和过滤器,以适应不同语言和应用场景的需求。 二、中文分词的重要性 中文分词是自然语言处理中的基础步骤,对于搜索引擎而言,正确的...

    solr分词器

    同时,可以通过Solr的分析器工具(Analysis UI)来实时查看分词效果,方便调试和优化。 总的来说,Solr分词器是构建高效、精准的全文搜索引擎不可或缺的一部分。选择合适的分词器并进行适当的配置,能够极大地提升...

    solr cloud6.1.0拼音分词

    在Solr中,拼音分词主要依赖于特定的分析器和过滤器。这些组件在索引和查询阶段处理文本,将汉字转化为拼音,以便于匹配。例如,"北京大学"会被转化为"bei da xue jia"。Solr 提供了若干种实现这个功能的插件,如...

    Solr6.5 IK分词器

    -- 查询分析器也可以添加过滤器 --&gt; ``` 文件`ikanalyzer-solr5`可能是一个包含IK分词器的Solr插件包,用于Solr 5版本,虽然与标题中的Solr 6.5不完全匹配,但在实际应用中,IK分词器的版本通常与Solr版本保持...

    solr分词器使用手册

    ### Solr分词器使用手册知识点详解 #### 一、Solr概述 - **定义**:Solr是一款基于Java开发的、由Apache基金会维护的顶级开源项目,它是一款高性能的全文检索服务器。Solr不仅继承了Lucene的核心索引与搜索能力,还...

    solr IK分词需要的资料

    IK分词器提供了扩展接口,允许开发人员根据需求定制自己的过滤器或分词策略。 - **热更新** 使用IK分词器的热更新功能,可以在不重启Solr的情况下动态加载新词库,提高系统的灵活性。 总结来说,集成和使用IK...

    k-analyzer-solr solr分词器

    在Solr中,分词器(Analyzer)和过滤器(Filter)共同作用于输入文本,完成诸如分词、去除停用词、词形还原等任务,以便提高搜索质量和效率。 **Solr分词器配置** 配置Solr分词器主要涉及以下几个步骤: 1. **...

    solr6.0中IK分词需要的资料

    3. 在Solr的配置文件中,如`solrconfig.xml`,确保分词相关的过滤器和分析器已经正确配置。 4. 重启Solr服务,使配置生效。 5. 创建或者更新Solr的索引,让新的分词器对文本进行处理。 通过以上步骤,你就可以在...

    solr中文分词高版本

    6. **测试分词**:通过Solr的分析器接口或者日志输出,可以检查分词效果,确保ikanalyzer正常工作。 7. **使用教程**:如果遇到任何问题,可以参考压缩包内提供的使用教程,按照步骤进行操作,通常会有详细的配置和...

    Solr java分词器

    2. 分词器(Tokenizer)、过滤器(Filter)和字符过滤器(CharFilter)的作用和工作流程。 3. 如何在Solr中配置和使用自定义分词器,如IK Analyzer。 4. 分词器的源码阅读和理解,以进行定制或优化。 5. 开发工具的...

    solr5的ik中文分词器源码

    用户可以通过修改或添加词典文件来优化分词效果,也可以编写自定义的过滤器或扩展词典格式。源码中会有相关的接口和类供开发者参考。 7. **打包成JAR**: 解压后的源码需要通过Maven或其他构建工具(如Gradle)...

    solr7.x-ik分词器亲测可用.zip

    - 根据实际需求调整 IK 分词器的配置参数,如启用/禁用某些过滤器,设置自定义词汇表等。 **IK 分词器的特性** - 支持动态加载自定义扩展词典,便于进行个性化的分词处理。 - 内置了英文分词,对于混合中英文的...

    solr(ik分词器)需要的jar包

    Ik分词器(IK Analyzer)是一个专门为Java设计的中文分词库,广泛应用于Solr和Elasticsearch等搜索引擎中。 标题中的"solr(ik分词器)需要的jar包"指的是为了在Solr中使用IK分词器,我们需要下载并添加相应的Java ...

    solr中文分词jar包ik-analyzer 含class配置 ik-analyzer-7.5.0

    1. **下载与解压**:获取ik-analyzer-7.5.0.jar文件,解压缩后将jar包放入Solr的lib目录下,确保Solr运行时能加载到该分词器。 2. **配置Solr schema.xml**:在Solr的schema.xml文件中,定义字段类型(fieldType),...

    solr分词 IKAnalyzer2012FF_hf1.rar

    - 在Solr的schema.xml中配置分析器,指定使用IKAnalyzer,并可自定义参数,如是否开启动态扩展等。 3. **使用与优化**: - 对于特定领域或行业,可以通过扩展词典来提升分词效果,增加专业术语。 - 考虑使用...

    solr分词器IKAnalyzer

    Solr是一款强大的全文搜索引擎服务器,而IKAnalyzer是针对中文的开源分词器,广泛应用于Solr和Elasticsearch等搜索引擎中。IKAnalyzer的设计目标是提供一个灵活且易扩展的中文分词解决方案,以满足不同场景下的分词...

    mlcsseg, solr分词器大补贴, 包括IK ANSJ、过滤器,动态加载词库.zip

    本文将深入探讨"mlcsseg"项目,它是一个针对Solr的开源分词器解决方案,其中包括了IK分词器和ANSJ分词器,以及各种过滤器和动态加载词库功能。以下是对这些知识点的详细说明: 1. **Solr分词器**:Solr是Apache ...

    Solr分词项目工程实例

    1. 配置索引:在Solr配置文件中定义字段类型(field type),指定对应的分词器和过滤器。 2. 导入数据:使用Solr的DataImportHandler(DIH)从数据库或其他数据源导入数据。 3. 分词索引:Solr会自动对导入的数据...

Global site tag (gtag.js) - Google Analytics