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).

这个过滤器:

  1.   删除HTML/XML标记,同时保存其他内容.
  2.   删除标记内的属性,支持可选择属性的引用.
  3.   删除XML处理指令,如:<?FOO吧>.
  4.   删除XML注释.
  5.   删除以 <!>开始的元素
  6.   删除 <script>和<type>元素的内容.
  7.   处理这些元素中XML注释(正常注释的处理并不总是工作).
  8.   替换数字字符实体引用,像  &#65; 或者 &#x7f;.
  9.   如果实体引用后跟着空格的话,结束符号";"是可以选择不写的.
  10.   替换所有命名字符实体引用.
  11.   &nbsp;被替换为一个空格,而不是0xa0.
  12.   结束符号";"是强制性的,避免错误匹配.
  13.   换行符替换为块级元素.
  14.   识别<CDATA>部分.
  15.   行内标签 , 如<b>,<i>,<span>将被删除.
  16.   大写字母实体像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 &#65 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. 1.5 理解Analyzers,Tokenizers,Filters--目录

    这部分介绍了solr如何分解和处理文本数据的,它包含一下主题: 1.5.1 Analyzers,Tokenizers,Filters概述:主要介绍Analyzers,Tokenizers,Filter ...

随机推荐

  1. C# 获取某月的第一天和最后一天

    /// <summary>        /// 取得某月的第一天        /// </summary>        /// <param name=" ...

  2. Wicket Hello World Example

    A simple hello world example in Wicket, show the basic structure of Wicket web application. Tools an ...

  3. 30几个HTML5经典动画应用回顾 让你大饱眼福

    周末大放送,让我们来回顾一下HTML5经典动画应用,一定会让你大饱眼福. 1.HTML5 Canvas画板画图工具 可定义笔刷和画布 HTML5 Canvas还有一个比较实用的应用,那就是网络画板,这 ...

  4. CodeForces Gym 100685C Cinderella (水题)

    题意:给定 n 个杯子,里面有不同体积的水,然后问你要把所有的杯子的水的体积都一样,至少要倒少多少个杯子. 析:既然最后都一样,那么先求平均数然后再数一下,哪个杯子的开始的体积就大于平均数,这是一定要 ...

  5. (《数论及应用1.3》NEFU 116 两仪剑法(最小公倍数&&最大公约数))

    #include <iostream> using namespace std; long long gcd(long long a, long long b){ if(b == 0){ ...

  6. Fragment进阶

    fragment之间的通信,fragment和Activity生命周期之间的关系 通过上一篇浅显的学习了一下,怎么在Activity中添加fragment.在介绍fragment之间的通信之前,我们来 ...

  7. Web CORS 跨域方式使用方式

    CORS 参考 http://enable-cors.org/index.html https://help.aliyun.com/document_detail/oss/practice/cors_ ...

  8. OSGI(面向Java的动态模型系统)

    基本简介编辑 OSGI服务平台提供在多种网络设备上无需重启的动态改变构造的功能.为了最小化耦合度和促使这些耦合度可管理,OSGi技术提供一种面向服务的架构,它能使这些组件动态地发现对方.OSGi联 O ...

  9. sc7731 Android 5.1 LCD驱动简明笔记之二

    此篇笔记基于sc7731 - android 5.1,对lcd的framebuffer做一个简明笔记. 一共分为两大部分:第一部分,关于LCD的硬件方面的:第二部分,关于lcd核心处理(framebu ...

  10. Android Studio 0.4 + PhoneGap 3.3 开发环境的搭建

    最近在尝试HTML5移动平台下的开发 由于安卓的方便性,首先开始了安卓的试验 现在安卓下的开发工具首选 Android Studio (写这文章的时候,是0.4) 而跨平台的HTML5 App比较出名 ...