W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
與分詞一樣,Solr 過濾器消耗輸入并產(chǎn)生一個令牌流。過濾器也來自于 org.apache.lucene.analysis.TokenStream。與分詞不同,過濾器的輸入是另一個TokenStream。過濾器的工作通常比 tokenizer 更容易,因為在大多數(shù)情況下,過濾器會依次查看流中的每個標(biāo)記,并決定是否將其傳遞、替換或丟棄。
過濾器也可以通過預(yù)先考慮多個令牌來進(jìn)行更復(fù)雜的分析,盡管這種情況不常見。這種過濾器的一個假設(shè)的用法可能是規(guī)范化將被標(biāo)記為兩個單詞的狀態(tài)名稱。例如,單個標(biāo)記 “california” 將被替換為 “CA”,而令牌對 “rhode” 后面跟著 “island” 將變成單個令牌 “RI”。
因為過濾器消耗一個 TokenStream 并產(chǎn)生一個新的過濾器 TokenStream,它們可以無限地連續(xù)鏈接在一起。鏈中的每個過濾器反過來處理由其前置生成的令牌。因此,指定過濾器的順序非常重要。通常,首先進(jìn)行最常規(guī)的過濾,稍后的過濾階段更專業(yè)化。
<fieldType name="text" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory"/>
</analyzer>
</fieldType>
這個例子從 Solr 的標(biāo)準(zhǔn) tokenizer 開始,它將字段的文本分解為令牌。然后,這些令牌通過 Solr 的標(biāo)準(zhǔn)過濾器,從首字母縮略詞中刪除點,并執(zhí)行一些其他的常見操作。所有的令牌都被設(shè)置為小寫,這將有利于在查詢時不區(qū)分大小寫的匹配。
上例中的最后一個過濾器是使用 Porter 干擾算法的干涉過濾器。詞干分析器基本上是一套映射規(guī)則,將單詞的各種形式映射回它們派生出來的基礎(chǔ)詞或詞干。例如,在英語中,“hugs”,“hugging” 和 “hugged” 這兩個詞都是詞干 “hug” 的所有形式。詞干將用 “hug” 來代替所有這些詞語,這將被索引。這意味著對 “hug” 的查詢將匹配術(shù)語 “hugged”,而不是 “huge”。
相反,將詞干應(yīng)用于查詢條件將允許包含非詞干術(shù)語(例如“hugging”)的查詢匹配具有相同詞干的不同變體(例如“hugged”)的文檔。這是可行的,因為索引器和查詢都將映射到相同的詞干(“hug”)。
詞干明顯地是非常特定于語言的。Solr 包含了幾個基于 Porter 干擾算法的由 Snowball 生成器創(chuàng)建的特定于語言的干預(yù)器。通用的 Snowball Porter Stemmer Filter可用于配置這些語言分析器。Solr 還為 English Snowball 詞干提供了一個便利的包裝。還有幾種專門為非英語語言設(shè)計的詞干。這些詞干在語言分析中有描述。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: