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 ...
随机推荐
- Android问题-XE5提示"[DCC Fatal Error] Project1.dpr(1): F1027 Unit not found: 'System.pas' or binary equivalents (.dcu/.o)"
问题现象:Checking project dependencies...Compiling Project1.dproj (Debug, Android)dcc command line for & ...
- 在Windows Server2008R2中导入Excel不能使用Jet 4.0的解决方法
一直使用以下代码从Excel中取数据,速度快方便: string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Dat ...
- GC:垃圾回收器简介
Java堆内存被划分为新生代和年老代两部分,新生代主要使用复制和标记-清除垃圾回收算法,年老代主要使用标记-整理垃圾回收算法,因此java虚拟中针对新生代和年老代分别提供了多种不同的垃圾收集器,JDK ...
- C语言中字符数组和字符串指针分析
这几天搞Unix上的C程序,里面用到了很多字符数组和字符串指针,我记得在学完C语言后相当一段时间里,对指针这个东西还是模模糊糊,后来工作也没怎么 用到过C,虽然网上这类的文章也有很多,还是决定自己在这 ...
- OC:属性的内部实现原理、dealloc内释放实例变量、便利构造器方法的实现原理、collection的内存管理
代码: // // main.m #import <Foundation/Foundation.h> #import "Person.h" #import " ...
- DB Cache
1 DB Cache 是以bock为单位组织的缓冲区,不同大小的BLOCK对应不同的缓冲区参数 2 DB Cache的命中率越高,访问性能就越好 3 Cache中的数据块通过散列算法实现 4 每个链上 ...
- js正则表达式之解析——URL的正则表达式
首先,此片文章并不是直接告诉你,url的正则表达式是什么,以及怎么使用这个正则表达式去解析一个URL地址,相信这种问题在网络上已经能找到很多.本文的宗旨在于教你如何理解URL的正则表达式,以达到理解正 ...
- 用ICSharpCode.SharpZipLib进行压缩
今天过中秋节,当地时间(2013-09-08),公司也放假了,正好也闲着没事,就在网上学习学习,找找资料什么的.最近项目上可能会用到压缩的功能,所以自己就先在网上学习了,发现一个不错的用于压缩的DLL ...
- 个推推送Android问题检测
1.获取不到CID问题: 1. 查看配置文件是否有问题,appkey.appsecret.appid是否有空格存在. 2. 相关权限是否全部添加. 3. manifest ...
- js查看浏览器类型和版本
var Sys = {}; var ua = navigator.userAgent.toLowerCase(); var s; var scan; (s = ua.match(/msie ([\d. ...