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