99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Solr處理輸入字符:CharFilter

2018-11-14 14:38 更新

什么是 CharFilter

CharFilter 是預(yù)處理輸入字符的組件。

CharFilter可以像 Token Filters 一樣鏈接在一個(gè) Tokenizer 前面。

CharFilters 可以添加、更改或刪除字符,同時(shí)保留原始字符偏移以支持突出顯示等功能。

本節(jié)將介紹如下幾個(gè)過濾器:

  • solr.MappingCharFilterFactory
  • solr.HTMLStripCharFilterFactory
  • solr.ICUNormalizer2CharFilterFactory
  • solr.PatternReplaceCharFilterFactory

solr.MappingCharFilterFactory

此過濾器創(chuàng)建 org.apache.lucene.analysis.MappingCharFilter,可用于將一個(gè)字符串更改為另一個(gè)(例如,用于標(biāo)準(zhǔn)化 é 為 e。)。

此過濾器需要指定 mapping 參數(shù),該參數(shù)是包含要執(zhí)行的映射的文件的路徑和名稱。

例:

<analyzer>
  <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-FoldToASCII.txt"/>
  <tokenizer ...>
  [...]
</analyzer>

映射文件語(yǔ)法:

  • 以哈希標(biāo)記(#)開頭的注釋行以及空白行將被忽略。
  • 每個(gè)非注釋,非空白行由以下形式的映射組成: "source" => "target",即:雙引號(hào)的源字符串、可選的空格、箭頭(=>)、可選的空格、雙引號(hào)的目標(biāo)字符串。
  • 不允許對(duì)映射行使用尾隨注釋。
  • 源字符串必須至少包含一個(gè)字符,但目標(biāo)字符串可能為空。
  • 以下字符轉(zhuǎn)義序列在源和目標(biāo)字符串中被識(shí)別:
    轉(zhuǎn)義序列結(jié)果字符(ECMA-48別名)Unicode字符示例映射線

    \\

    \

    U + 005C

    "\\" => "/"

    \"

    "

    U + 0022

    "\"and\"" => "'and'"

    \b

    退格(BS)

    U + 0008

    "\b" => " "

    \t

    標(biāo)簽(HT)

    U + 0009

    "\t" => ","

    \n

    換行(LF)

    U + 000A

    "\n" => "<br>"

    \f

    換頁(yè)(FF)

    U + 000C

    "\f" => "\n"

    \r

    回車(CR)

    U + 000D

    "\r" => "/carriage-return/"

    \uXXXX

    由4個(gè)十六進(jìn)制數(shù)字引用的 Unicode 字符

    U + XXXX

    "\uFEFF" => ""

    任何其他字符之后的反斜杠被解釋為如果字符不存在反斜線。后面跟著其他字符的反斜杠被解釋為沒有反斜杠的字符。

solr.HTMLStripCharFilterFactory

這個(gè)過濾器創(chuàng)建 org.apache.solr.analysis.HTMLStripCharFilter。此 CharFilter 從輸入流中剝離 HTML 并將結(jié)果傳遞給另一個(gè) CharFilter 或 Tokenizer。

這個(gè)過濾器:

  • 刪除HTML / XML標(biāo)記,同時(shí)保留其他內(nèi)容。
  • 刪除標(biāo)簽中的屬性并支持可選的屬性引用。
  • 刪除 XML 處理指令,例如:<?foo bar?>
  • 刪除 XML 注釋。
  • 刪除以 <!> 開頭的 XML 元素。
  • 刪除 <script> 和 <style> 元素的內(nèi)容。
  • 處理這些元素中的 XML 注釋(正常的注釋處理不會(huì)總是有效的)。
  • 替換數(shù)字字符實(shí)體引用,如 A 或  與相應(yīng)的字符。
  • 終止 ';' 如果輸入末尾的實(shí)體引用是可選的;否則終止 ';' 是強(qiáng)制性的,以避免 “Alpha&Omega Corp” 之類的錯(cuò)誤匹配。
  • 用相應(yīng)的字符替換所有命名的字符實(shí)體引用。
  •   被替換為空格而不是 0xa0 字符。
  • 換行符代替塊級(jí)元素。
  • <CDATA> 部分被識(shí)別。
  • 內(nèi)嵌標(biāo)簽,如 <b>,<i> 或 <span> 將被刪除。
  • 大寫字符實(shí)體類似 quot、gt、lt 和 amp被認(rèn)為和小寫處理。

Tip:輸入不一定是一個(gè) HTML 文檔。過濾器只刪除看起來(lái)像 HTML 的構(gòu)造。如果輸入不包含任何看起來(lái)像 HTML 的內(nèi)容,則篩選器不會(huì)刪除任何輸入。

下表介紹了 HTML 剝離的示例:

輸入輸出

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;

如果 a < b,則輸出 a;

hello <td height=22 nowrap align="left">

hello

a<b A Alpha&Omega Ω

a <b A Alpha&ΩΩ

例:

<analyzer>
  <charFilter class="solr.HTMLStripCharFilterFactory"/>
  <tokenizer ...>
  [...]
</analyzer>

solr.ICUNormalizer2CharFilterFactory

該過濾器使用 ICU4J 執(zhí)行預(yù)標(biāo)記化 Unicode 標(biāo)準(zhǔn)化。

參數(shù):

name

一個(gè)Unicode范式,一nfc,nfkc,nfkc_cf。默認(rèn)是nfkc_cf。

mode

無(wú)論是composedecompose。默認(rèn)是compose。使用decomposename="nfc"name="nfkc"分別獲得NFD或NFKD。

filter

一個(gè) UnicodeSet 模式。集外的代碼點(diǎn)始終保持不變。默認(rèn)是[](空集,沒有過濾 - 所有的碼點(diǎn)都受到規(guī)范化)。

例:

<analyzer>
  <charFilter class="solr.ICUNormalizer2CharFilterFactory"/>
  <tokenizer ...>
  [...]
</analyzer>

solr.PatternReplaceCharFilterFactory

此過濾器使用正則表達(dá)式替換或更改字符模式。

參數(shù):

pattern

正則表達(dá)式模式應(yīng)用于傳入的文本。

replacement

用來(lái)替換匹配模式的文本。

你可以在 schema.xml 中像這樣配置這個(gè)過濾器:

<analyzer>
  <charFilter class="solr.PatternReplaceCharFilterFactory"
             pattern="([nN][oO]\.)\s*(\d+)" replacement="$1$2"/>
  <tokenizer ...>
  [...]
</analyzer>

下面的表格給出了基于正則表達(dá)式的模式替換的例子:

輸入模式替代輸出描述

see-ing looking

(\w+)(ing)

$1

see-ing look

從詞尾刪除 “ing”

see-ing looking

(\w+)ing

$1

see-ing look

同上,第二個(gè)括號(hào)可以省略

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

改變組的順序

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)