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 ...
随机推荐
- CSS3每日一练之内容处理-嵌套编号
出处:http://www.w3cfuns.com/thread-5592229-1-17.html 1.大标题一 1.子标题 2.子标题 3.子标题2.大标题二 1.子标题 2. ...
- POJ 1410 Intersection(判断线段交和点在矩形内)
Intersection Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9996 Accepted: 2632 Desc ...
- hdu 4738 Caocao's Bridges(桥的最小权值+去重)
http://acm.hdu.edu.cn/showproblem.php?pid=4738 题目大意:曹操有一些岛屿被桥连接,每座都有士兵把守,周瑜想把这些岛屿分成两部分,但他只能炸毁一条桥,问最少 ...
- Python序列(Sequence)
Sequence是Python的一种内置类型(built-in type),内置类型就是构建在Python Interpreter里面的类型,三种基本的Sequence Type是list(表),tu ...
- csu oj 1804: 有向无环图 (dfs回溯)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1804 中文题意就不说了. dfs从底到根回溯即可,看代码应该能清楚. //#pragma ...
- How Tomcat Works(十二)
tomcat容器通过一个称为Session管理器的组件来管理建立的Session对象,该组件由org.apache.catalina.Manager接口表示:Session管理器必须与一个Contex ...
- [hihoCoder]#1039 : 字符消除
Description 小Hi最近在玩一个字符消除游戏.给定一个只包含大写字母"ABC"的字符串s,消除过程是如下进行的: 1)如果s包含长度超过1的由相同字母组成的子串,那么这些 ...
- (剑指Offer)面试题23:从上到下打印二叉树
题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 思路: 很明显,这是一个广度优先遍历. 需要一个队列容器来保存结点,具体操作: 1.将根结点压入队列中,并打印根结点:如果根结点有子结点 ...
- 2.里氏替换原则(Liskov Substitution Principle)
1.定义 里氏替换原则的定义有两种,据说是由麻省理工的一位姓里的女士所提出,因此以其名进行命名. 定义1:如果对一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1所定义的程序P中在o1全都 ...
- Car immobilizer hacking
Karsten Nohl <nohl@srlabs.de>