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

这个过滤器:

  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的顺序
原文地址:https://www.cnblogs.com/a198720/p/4302742.html