什么是Tokenizer-分词

  分词器的工作就是分解文本流成词(tokens).在这个文本中,每一个token都是这些字符的一个子序列.一个分析器(analyzer)必须知道它所配置的字段,但是tokenizer不需要,分词器(tokenizer)从一个字符流(reader)读取数据,生成一个Token对象(TokenStream)的序列.

  输入流中的一些字符可能会被丢弃,如空格和一些分隔符;也可能会被添加或者替换,如别名映射和缩写.一个token包含多种元数据除了它的原始文本值,如字段中词(token)出现的位置.因为分词器从输入文本中发散之后生成词(tokens),你是不能假定token的文本和字段中出现的文本相同的.在原始的文本中很有可能超过一个的token拥有相同的位置或者关联相同的偏移量(offset).如果你使用token元数据做高亮时,请注意这一点儿.

<fieldType name="text" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory" />
</analyzer>
</fieldType>

  这里边tokenizer元素的class的值并不是实际的值,而是一个实现了org.apache.solr.analysis.TokenizerFactory接口的类.这个工厂类被调用用来创建所需要的新的tokenizer实例.源自org.apache.lucene.analysis.TokenStream,工厂创建的对象显示了它们产生的tokens序列.如果tokenizer生成的token正是它所需要的,那么它也许就是analyzer的唯一组件.否则,分词器的输出的tokens将作为管道中第一个过滤器的输入.

  TypeTokenFilterFactory可用于创建一个TypeTokenFilter,这个对象过滤tokens基于它们的TypeAttribute的.可以在factory.getStopTypes中设置.

CharFilter vs  TokenFilter

  这里有好几对的CharFilters和tokenFilters是有关联(MappingCharFilter和ASCIIFoldingFilter)或者是几乎相同(PatternReplaceCharFilterFactory和PatternReplaceFilterFactory)的功能.通常不好区分哪一个才是最好的选择.

  使用哪个过滤器很大程度上依赖于你使用的是哪个分词器(tokenizer),你是否需要预处理字符流.

  举例来说,假设你有一个StandardTokenizer的分词器,并且你很想知道它整体上是如何工作的,你想要自定义了一些指定的字符的行为表现.你需要修改你的规则,重新编译你得分词器(tokenizer).但是在分词前使用一个charFilter简单映射一些字符会使它变的更加简单.

1.5.3 什么是Tokenizer-分词的更多相关文章

  1. solr学习之六--------Analyzer(分析器)、Tokenizer(分词器)

    首先,不知道大家在前面的例子中没有试着搜索文本串,就是在第二节,我们添加了很多文档.如果字段值是一个文本.你如果只搜索这个字段的某个单词,是不是发现搜不到? 这就是因为我们没有配置Analyzer,因 ...

  2. solr介绍一:Analyzer(分析器)、Tokenizer(分词器)

    首先,不知道大家在前面的例子中没有试着搜索文本串,就是在第二节,我们添加了很多文档.如果字段值是一个文本.你如果只搜索这个字段的某个单词,是不是发现搜不到? 这就是因为我们没有配置Analyzer,因 ...

  3. python环境jieba分词的安装

    我的python环境是Anaconda3安装的,由于项目需要用到分词,使用jieba分词库,在此总结一下安装方法. 安装说明======= 代码对 Python 2/3 均兼容 * 全自动安装:`ea ...

  4. jieba中文分词

      jieba中文分词¶   中文与拉丁语言不同,不是以空格分开每个有意义的词,在我们处理自然语言处理的时候,大部分情况下,词汇是对句子和文章的理解基础.因此需要一个工具去把完整的中文分解成词. ji ...

  5. python第三方库------jieba库(中文分词)

    jieba“结巴”中文分词:做最好的 Python 中文分词组件 github:https://github.com/fxsjy/jieba 特点支持三种分词模式: 精确模式,试图将句子最精确地切开, ...

  6. ES中的分词器

    基本概念: 全文搜索引擎会用某种算法对要建索引的文档进行分析, 从文档中提取出若干Token(词元), 这些算法称为Tokenizer(分词器), 这些Token会被进一步处理, 比如转成小写等, 这 ...

  7. [ES]elasticsearch章5 ES的分词(二)

    Elasticsearch 中文搜索时遇到几个问题: 当搜索关键词如:“人民币”时,如果分词将“人民币”分成“人”,“民”,“币”三个单字,那么搜索该关键词会匹配到很多包含该单字的无关内容,但是如果将 ...

  8. 自然语言处理之jieba分词

    在处理英文文本时,由于英文文本天生自带分词效果,可以直接通过词之间的空格来分词(但是有些人名.地名等需要考虑作为一个整体,比如New York).而对于中文还有其他类似形式的语言,我们需要根据来特殊处 ...

  9. 发布了一个基于jieba分词的ElasticSearch插件

    github地址: https://github.com/hongfuli/elasticsearch-analysis-jieba 基于 jieba 的 elasticsearch 中文分词插件. ...

  10. 自然语言处理--jieba和gensim的分词功能

    一.jieba分词功能 1.主要模式 支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析: 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义: 搜索引擎模 ...

随机推荐

  1. Java之对象池

    单例模式是限制了一个类只能有一个实例,对象池模式则是限制一个类实例的个数.对象池类就像是一个对象管理员,它以Static列表(也就是装对象的池子)的形式存存储某个实例数受限的类的实例,每一个实例还要加 ...

  2. 第三次作业随笔(new)包含了补作业

    第三次作业的题目:http://www.cnblogs.com/fzuoop/p/5187275.html 第一次看到题目的时候觉得应该是挺简单的,只要把输入的那一串东西挨个判断,用数列的方法,如果碰 ...

  3. mysql处理大数据量的查询速度究竟有多快和能优化到什么程度

    mysql处理大数据量的查询速度究竟有多快和能优化到什么程度 深圳-ftx(1433725026) 18:10:49  mysql有没有排名函数啊 横瓜(601069289) 18:13:06  无 ...

  4. Spring REST实践之Error Handling

    Error Responses 在REST API中,HTTP状态码有非常重要的作用.API开发者应该坚持为每一个请求返回一个正确合适的状态码,而且应该在响应body中包含有用的.细粒度的错误信息.这 ...

  5. 关于 mobile sui a外链 老是出现加载失败的解决办法

    mobile sui 框架里面的a本身都绑了了一个ajax方法,ajax只能处理同域,跨域就会出现问题 ,所以mobile sui 中的a如果是外链的话就会出现加载失败的提示,这种明显的bug,让用户 ...

  6. aix-裸设备文件大小查看

    1.使用lsvg 查看有哪些vg 2.使用lsvg myvg VOLUME GROUP: myvg VG IDENTIFIER: 00f7563100004c000000013e5f8a53fa VG ...

  7. Codeforces Round #336 (Div. 2) C. Chain Reaction set维护dp

    C. Chain Reaction 题目连接: http://www.codeforces.com/contest/608/problem/C Description There are n beac ...

  8. Codeforces Round #260 (Div. 1) A - Boredom DP

    A. Boredom Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/455/problem/A ...

  9. hdu 3339 In Action 背包+flyod

    In Action Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=333 ...

  10. C#操作Word生成目录

    OperateWord ow = new OperateWord(); Microsoft.Office.Interop.Word.ApplicationClass ss = ow.WordAppli ...