1.5.7 CharFilterFactories
CharFilterFactories
字符过滤器是一个预处理输入字符的组件,字符过滤器可以链接如token过滤器,并放置在Tokenizer(分词器)的前面,字符过滤器可以添加,更改或删除字符,同时保留原有的字符偏移量,以支持如高亮的功能.
solr.MappingCharFilterFactory
这个过滤器创建了org.apache.lucene.analysis.MappingCharFilter,可以用来改变字符.如规范化é 为 e.
例子:
<analyzer>
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-FoldToASCII.txt" />
</analyzer>
solr.HTMLStripCharFilterFactory
这个顾虑器创建了org.apache.solr.analysis.HTMLStripCharFilter,这个过滤器从输入流中剥离HTML标签,传递结果给另一个字符过滤器或者分词器(Tokenizer).
这个过滤器:
- 删除HTML/XML标记,同时保存其他内容.
- 删除标记内的属性,支持可选择属性的引用.
- 删除XML处理指令,如:<?FOO吧>.
- 删除XML注释.
- 删除以 <!>开始的元素
- 删除 <script>和<type>元素的内容.
- 处理这些元素中XML注释(正常注释的处理并不总是工作).
- 替换数字字符实体引用,像 A 或者 .
- 如果实体引用后跟着空格的话,结束符号";"是可以选择不写的.
- 替换所有命名字符实体引用.
- 被替换为一个空格,而不是0xa0.
- 结束符号";"是强制性的,避免错误匹配.
- 换行符替换为块级元素.
- 识别<CDATA>部分.
- 行内标签 , 如<b>,<i>,<span>将被删除.
- 大写字母实体像quot,gt,lt,amp会被识别,并转为小写.
下面是一些例子:
| 输入 | 输出 |
| my <a href="www.foo.bar">link</a> | my link |
| <br>hello<!--comment--> | hello |
| hello<script><!-- f('<!--internal--></script>'); --></script> | hello |
| if a<b then print a; | if a<b then print a; |
| hello <td height=22 nowrap align="left"> | hello |
| a<b A Alpha&Omega | a<b A Alpha&Omega |
solr.PatternReplaceCharFilterFactory
参数:
pattern:对于传入文本使用的正则表达式.
replaceWith:用来替换匹配模式(pattern)的文本.
<analyzer>
<charFilter class="solr.PatternReplaceCharFilterFactory"
pattern="([nN][oO]\.)\s*(\d+)" replaceWith="$1$2" />
</analyzer>
下面是基于正则模式替换的例子:
| 输入 | Pattern | 替换 | 输出 | 描述 |
| see-ing looking | (\w+)(ing) | $1 | see-ing look | 删除单词末尾的 "ing" |
| see-ing looking | (\w+) ing | $1 | see-ing look | 和上面相同,第二个括号可以忽略. |
| No.1 NO. no. 543 | [nN][oO]\.\s*(\d+) | #$1 | #1 NO. #543 | 替换一些字符串文字. |
| abc=1234=5678 | (\w+)=(\d+)=(\d+) | $3=$1=$2 | 5678=abc=1234 | 改变groups的顺序 |
1.5.7 CharFilterFactories的更多相关文章
- 1.5 理解Analyzers,Tokenizers,Filters--目录
这部分介绍了solr如何分解和处理文本数据的,它包含一下主题: 1.5.1 Analyzers,Tokenizers,Filters概述:主要介绍Analyzers,Tokenizers,Filter ...
随机推荐
- 自定义元素 – 在 HTML 中定义新元素
本文翻译自 Custom Elements: defining new elements in HTML,在保证技术要点表达准确的前提下,行文风格有少量改编和瞎搞. 原译文地址 本文目录 引言 用时髦 ...
- C++视频课程小结(3)
C++远征之封装篇(上) 章节介绍: 每章小结: 第一章:课程介绍. 按照惯例是章节的总介绍,内容明显多了很多(为了做作业我还要赶进度的说),主要说了:类和对象是本章的主角,然后还有很多配角,像数据成 ...
- JDBC 常用驱动类及url格式
1. oracle <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</ ...
- 结合windows消息系统理解C#中WndProc函数和DefWndProc函数
Windows消息系统由3部分组成: 1.消息队列.Windows应用程序的消息是由Windows统一在一个消息队列中管理的. 2.消息循环.应用程序从Windows消息队列中获得自己 ...
- vector中的erase方法[转+补充]
注释如下: iterator erase(iterator it); // 删除指定元素,并返回删除元素后一个元素的位置(如果无元素,返回end())iterator erase(iter ...
- JPA的主键生成策略
数据的唯一性是很平常的要求,但是如果框架不能提供相关的控制而由程序员完全控制是很危险的,在JPA中,有下面四种策略.A.容器自动生成---GeneratorType.AUTO 由JPA自动生成B.使用 ...
- wikioi 1010 过河卒
题目描述 Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点 ...
- java/android线程池详解
一,简述线程池: 线程池是如何工作的:一系列任务出现后,根据自己的线程池安排任务进行. 如图: 线程池的好处: 重用线程池中的线程,避免因为线程的创建和销毁所带来的性能开销. 能有效控制线程池的最大并 ...
- ActionBar ShareActionProvider
添加share按钮 添加share按钮的主要步骤: 1. 在ActionBar中添加share按钮 2. 从item中获取ShareActionProvider ShareActionProvider ...
- mac下xampp简单虚拟主机配置
多域名,虚拟主机的配置 开启虚拟主机配置选项: 打开httpd.conf文件,找到httpd-vhosts.conf那一行,解除该行注释: 打开httpd-vhosts.conf文件 修改如下 < ...