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 ...
随机推荐
- Spark的发展历程
·2009年:Spark诞生于AMPLab.·2010年:开源.·2013年6月:Apache孵化器项目.·2014年2月:Apache顶级项目.·2014年2月:大数据公司Cloudera宣称加大S ...
- Java模板引擎 FreeMarker
@(编程) [TOC] 1. 简介 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写.它是为Java程序员提供的一个开发包.它不是面向最终用户的,而是为程序员 ...
- 一种将Region转为Polyline的方法
在AutoCAD.NET二次开发中,如果要将面域转为Polyline主要有以下几种方式: 1.使用Explode将面域炸成Line和Arc,然后再串起来,此方法可用于AutoCAD2007开始的所有版 ...
- mac电脑Coding显示/隐藏文件
苹果Mac OS X操作系统下,隐藏文件是否显示有很多种设置方法,最简单的要算在Mac终端输入命令.显示/隐藏Mac隐藏文件命令如下(注意其中的空格并且区分大小写): 显示Mac隐藏文件的命令:def ...
- POJ2155Matrix(二维线段树)
链接http://poj.org/problem?id=2155 题目操作就是说,每次操作可以是编辑某个矩形区域,这个区域的0改为1,1改为0,每次查询只查询某一个点的值是0还是1. 方法:二维线段树 ...
- SQL Script 杂记
1.提交sql server中未提交的事务 commit select @@TRANCOUNT 2.查询存储过程中包含某个字符串的所有存储过程 SELECT *FROM INFORMATION ...
- How Tomcat Works(七)
本文接下来介绍并分析servlet容器,servlet容器是用来处理请求servlet资源,并为web客户端填充response对象的模块. servlet容器是org.apache.catalina ...
- Magento开发文档(一):Magento入门
开始之前,首先声明下,Magento开发者手册由Alan Storm发表在Magento官方网站上.总共分八个部分,由浅入深的介绍了Magento的MVC架构及Magento中使用的比较特殊的EAV模 ...
- 全面认识jQuery.fn,菜鸟总结
今天想做树形导航栏,查找了资料,找到了一个框架,比较小所以研究其中的代码,发现第一句话就把我难住了,主角是——jQuery.fn. 在此,再次停住,只好继续找资料,现在整理下自己所理解到的知识. 一, ...
- SAP MRP的计算步骤
SAP MRP的计算步骤,物料需求计划(简称为MRP)与主生产计划一样属于ERP计划管理体系,它主要解决企业生产中的物料需求与供给之间的关系,即无论是对独立需求的物料,还是相关需求的物料, ...