solr中的Tokenizer Filter
Tokenizer
Tokenizer 的工作是将文本流分解为令牌,其中每个令牌(通常)是文本中字符的子序列。分析器知道它配置的字段,但 tokenizer 不是。Tokenizers 从字符流(Reader)中读取并生成一系列令牌对象(TokenStream)。
输入流中的字符可能被丢弃,如空格或其他分隔符。也可以添加或替换它们,例如将别名或缩写映射到规范化的窗体。令牌包含除文本值之外的各种元数据,例如字段中令牌出现的位置。由于 Tokenizer 可能会产生与输入文本不一致的标记,因此不应假定该标记的文本与字段中出现的文本相同,或者其长度与原始文本相同。也可能有多个令牌具有相同的位置或引用原始文本中的相同偏移量。请记住,如果您使用令牌元数据来突出显示字段文本中的搜索结果。
<fieldType name="text" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
</analyzer>
</fieldType>
在 tokenizer 元素中命名的类不是实际的 tokenizer,而是实现 TokenizerFactory API 的类。这个工厂类将被调用来根据需要创建新的 tokenizer 实例。由工厂创建的对象必须来自于 Tokenizer,这表示它们产生令牌序列。如果令牌生成器产生可以按原样使用的令牌,则它可能是分析器的唯一组件。否则,tokenizer 的输出标记将作为流水线中第一个过滤器阶段的输入。
TypeTokenFilterFactory 可用与创建 TypeTokenFilter 根据在 factory.getStopTypes 中设置的 TypeAttribute。
Filter
与分词一样,Solr 过滤器消耗输入并产生一个令牌流。过滤器也来自于 org.apache.lucene.analysis.TokenStream。与分词不同,过滤器的输入是另一个TokenStream。过滤器的工作通常比 tokenizer 更容易,因为在大多数情况下,过滤器会依次查看流中的每个标记,并决定是否将其传递、替换或丢弃。
过滤器也可以通过预先考虑多个令牌来进行更复杂的分析,尽管这种情况不常见。这种过滤器的一个假设的用法可能是规范化将被标记为两个单词的状态名称。例如,单个标记 “california” 将被替换为 “CA”,而令牌对 “rhode” 后面跟着 “island” 将变成单个令牌 “RI”。
因为过滤器消耗一个 TokenStream 并产生一个新的过滤器 TokenStream,它们可以无限地连续链接在一起。链中的每个过滤器反过来处理由其前置生成的令牌。因此,指定过滤器的顺序非常重要。通常,首先进行最常规的过滤,稍后的过滤阶段更专业化。
<fieldType name="text" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory"/>
</analyzer>
</fieldType>
这个例子从 Solr 的标准 tokenizer 开始,它将字段的文本分解为令牌。然后,这些令牌通过 Solr 的标准过滤器,从首字母缩略词中删除点,并执行一些其他的常见操作。所有的令牌都被设置为小写,这将有利于在查询时不区分大小写的匹配。
上例中的最后一个过滤器是使用 Porter 干扰算法的干涉过滤器。词干分析器基本上是一套映射规则,将单词的各种形式映射回它们派生出来的基础词或词干。例如,在英语中,“hugs”,“hugging” 和 “hugged” 这两个词都是词干 “hug” 的所有形式。词干将用 “hug” 来代替所有这些词语,这将被索引。这意味着对 “hug” 的查询将匹配术语 “hugged”,而不是 “huge”。
相反,将词干应用于查询条件将允许包含非词干术语(例如“hugging”)的查询匹配具有相同词干的不同变体(例如“hugged”)的文档。这是可行的,因为索引器和查询都将映射到相同的词干(“hug”)。
词干明显地是非常特定于语言的。Solr 包含了几个基于 Porter 干扰算法的由 Snowball 生成器创建的特定于语言的干预器。通用的 Snowball Porter Stemmer Filter可用于配置这些语言分析器。Solr 还为 English Snowball 词干提供了一个便利的包装。还有几种专门为非英语语言设计的词干。这些词干在语言分析中有描述。
solr中的Tokenizer Filter的更多相关文章
- Solr中Schema.xml中文版
<?xml version="1.0" encoding="UTF-8" ?> <!-- Licensed to the Apache Sof ...
- Lucene 中的Tokenizer, TokenFilter学习
lucene中的TokenStream,TokenFilter之间关系 TokenStream是一个能够在被调用后产生语汇单元序列的类,其中有两个类型:Tokenizer和TokenFilte ...
- 在Solr中配置中文分词IKAnalyzer
李克华 云计算高级群: 292870151 交流:Hadoop.NoSQL.分布式.lucene.solr.nutch 在Solr中配置中文分词IKAnalyzer 1.在配置文件schema.xml ...
- 在Solr中配置和使用ansj分词
在上一节[编译Ansj之Solr插件]中介绍如何编译ansj分词在solr(lucene)环境中使用的接口,本章将介绍如何在solr中使用ansj,其步骤主要包括:下载或者编译ansj和nlp-lan ...
- Solr 08 - 在Solr Web管理页面中查询索引数据 (Solr中各类查询参数的使用方法)
目录 1 Solr管理页面的查询入口 2 Solr查询输入框简介 3 Solr管理页面的查询方案 1 Solr管理页面的查询入口 选中需要查询的SolrCore, 然后在菜单栏选择[Query]: 2 ...
- solr中Cache综述
一.概述 Solr查询的核心类就是SolrIndexSearcher,每个core通常在同一时刻只由当前的SolrIndexSearcher供上层的handler使用(当切换SolrIndexSear ...
- 在Lucene或Solr中实现高亮的策略
一:功能背景 近期要做个高亮的搜索需求,曾经也搞过.所以没啥难度.仅仅只是原来用的是Lucene,如今要换成Solr而已,在Lucene4.x的时候,散仙在曾经的文章中也分析过怎样在搜索的时候实现高亮 ...
- Angularjs在控制器(controller.js)的js代码中使用过滤器($filter)格式化日期/时间实例
Angularjs内置的过滤器(filter)为我们的数据信息格式化提供了比较强大的功能,比如:格式化时间,日期.格式化数字精度.语言本地化.格式化货币等等.但这些过滤器一般都是在VIEW中使用的,比 ...
- solr与.net系列课程(八)solr中重跑索引的注意事项
solr与.net系列课程(八)solr中重跑索引的注意事项 我们如果在项目中使用solr,那肯定就是把数据库中的数据跑进solr服务器中,solr有两种操作一种是新建索引,一种是增量索引,这里我们来 ...
随机推荐
- Ubuntu18 安装jdk8
按照网上能找到的方法,添加仓库已经不行了,具体原因如下: I look up to the webupd8 site and it seems that the ppa was discontinue ...
- 51Nod 1649 齐头并进
#include <iostream> #include <algorithm> #include <cstring> //两遍迪杰斯特拉 #define INF ...
- 跟我一起玩Win32开发(12):使用控件——单选按钮
今天,咱们还是接着玩“控件斗地主”,这是我原创的超级游戏,有益身心健康,玩一朝,十年少. 哦,对,脑细胞极速运动了一下,想起了一个问题,这个破问题虽然网上有很多种解决方案,但是,并没有让所有人都解决问 ...
- Qt容器类之一:Qt的容器类介绍
一.介绍 Qt库提供了一套通用的基于模板的容器类,可以用这些类存储指定类型的项.比如,你需要一个大小可变的QString的数组,则使用QVector<QString>. 这些容器类比STL ...
- Angular4项目,默认的package.json创建及配置
1.使用如下命令,可以创建一个默认的 package.json npm init 创建后如下图所示: 添加 angular4 的 dependencies: npm install@ ...
- python对ini配置文件处理
实例文件: [root@docker2 ~]# cat test.ini [base] host = 192.168.88.121 port = 3306 user = root path = /ho ...
- Execution of 'source /usr/hdp/current/oozie-server/conf/oozie--env.sh: oozie admin -oozie http://nssa-sensor3:11000/oozie -status' returned 255.解决办法(图文详解)
不多说,直接上干货! 问题详情 解决办法 Copy/Paste oozie.services property tag set from oozie-default.xml to oozie-site ...
- P2345 奶牛集会andP2657 低头一族
做法是一样的 题目背景 MooFest, Open 题目描述 约翰的N 头奶牛每年都会参加“哞哞大会”.哞哞大会是奶牛界的盛事.集会上的活动很 多,比如堆干草,跨栅栏,摸牛仔的屁股等等.它们参加活动时 ...
- P1720 月落乌啼算钱
题目背景 (本道题目木有以藏歌曲……不用猜了……) <爱与愁的故事第一弹·heartache>最终章. 吃完pizza,月落乌啼知道超出自己的预算了.为了不在爱与愁大神面前献丑,只好还是硬 ...
- WPF学习12:基于MVVM Light 制作图形编辑工具(3)
本文是WPF学习11:基于MVVM Light 制作图形编辑工具(2)的后续 这一次的目标是完成 两个任务. 本节完成后的效果: 本文分为三个部分: 1.对之前代码不合理的地方重新设计. 2.图形可选 ...