W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Tokenizer 的工作是將文本流分解為令牌,其中每個令牌(通常)是文本中字符的子序列。分析器知道它配置的字段,但 tokenizer 不是。Tokenizers 從字符流(Reader)中讀取并生成一系列令牌對象(TokenStream)。
輸入流中的字符可能被丟棄,如空格或其他分隔符。也可以添加或替換它們,例如將別名或縮寫映射到規(guī)范化的窗體。令牌包含除文本值之外的各種元數(shù)據(jù),例如字段中令牌出現(xiàn)的位置。由于 Tokenizer 可能會產(chǎn)生與輸入文本不一致的標記,因此不應假定該標記的文本與字段中出現(xiàn)的文本相同,或者其長度與原始文本相同。也可能有多個令牌具有相同的位置或引用原始文本中的相同偏移量。請記住,如果您使用令牌元數(shù)據(jù)來突出顯示字段文本中的搜索結(jié)果。
<fieldType name="text" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
</analyzer>
</fieldType>
在 tokenizer 元素中命名的類不是實際的 tokenizer,而是實現(xiàn) TokenizerFactory API 的類。這個工廠類將被調(diào)用來根據(jù)需要創(chuàng)建新的 tokenizer 實例。由工廠創(chuàng)建的對象必須來自于 Tokenizer,這表示它們產(chǎn)生令牌序列。如果令牌生成器產(chǎn)生可以按原樣使用的令牌,則它可能是分析器的唯一組件。否則,tokenizer 的輸出標記將作為流水線中第一個過濾器階段的輸入。
TypeTokenFilterFactory 可用與創(chuàng)建 TypeTokenFilter 根據(jù)在 factory.getStopTypes 中設置的 TypeAttribute。
有關可用 TokenFilters 的完整列表,請參閱 Tokenizers 部分。
有幾個 CharFilter 和 TokenFilter 對具有相關的(即:MappingCharFilter 和 ASCIIFoldingFilter)或幾乎相同的(即:PatternReplaceCharFilterFactory 和PatternReplaceFilterFactory)功能,并且它可能并不總是顯而易見的,這是最好的選擇。
決定使用哪一個 Tokenizer,以及是否需要預處理字符流。
例如,假設你有一個 tokenizer,如 StandardTokenizer,雖然你對它的工作方式感到滿意,但是你想要定制一些特定字符的行為。您可以修改規(guī)則并使用 JFlex 重新構(gòu)建自己的 tokenizer,但是在使用標記和 CharFilter 之前簡單地映射某些字符可能更容易。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: