W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Solr 過(guò)濾器可以檢查一個(gè)令牌流,并保留它們,根據(jù)所使用的過(guò)濾器類(lèi)型對(duì)它們進(jìn)行轉(zhuǎn)換或丟棄。
您可以使用在 schema.xml 中的 <filter> 元素作為子元素來(lái)配置每個(gè)過(guò)濾器,在 <tokenizer> 元素之后。過(guò)濾器定義應(yīng)遵循 tokenizer 或其他過(guò)濾器定義,因?yàn)樗鼈儾捎?TokenStream 作為輸入。例如:
<fieldType name="text" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>...
</analyzer>
</fieldType>
類(lèi)屬性命名一個(gè)工廠(chǎng)類(lèi),它將根據(jù)需要實(shí)例化一個(gè)過(guò)濾器對(duì)象。過(guò)濾器工廠(chǎng)類(lèi)必須實(shí)現(xiàn) org.apache.solr.analysis.TokenFilterFactory 接口。像 tokenizers 一樣,過(guò)濾器也是 TokenStream 的實(shí)例,因此是令牌的生產(chǎn)者。與 tokenizers 不同,過(guò)濾器也消耗 TokenStream 中的標(biāo)記。這允許您按照您喜歡的任何順序在 tokenizers 下游混合和匹配過(guò)濾器。
通過(guò)在 <filter> 元素上設(shè)置屬性,可以將參數(shù)傳遞給 tokenizer 工廠(chǎng)以修改其行為。例如:
<fieldType name="semicolonDelimited" class="solr.TextField">
<analyzer type="query">
<tokenizer class="solr.PatternTokenizerFactory" pattern="; " />
<filter class="solr.LengthFilterFactory" min="2" max="7"/>
</analyzer>
</fieldType>
以下各節(jié)介紹了此版本 Solr 中包含的過(guò)濾器工廠(chǎng)。
有關(guān) Solr 過(guò)濾器的用戶(hù)提示,請(qǐng)參閱:http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters。
此篩選器將不在 Basic Latin Unicode 塊(前 127 個(gè) ASCII 字符)中的字母、數(shù)字和符號(hào) Unicode 字符轉(zhuǎn)換為其 ASCII 等效字符(如果存在)。此過(guò)濾器轉(zhuǎn)換來(lái)自以下 Unicode 塊的字符:
工廠(chǎng)類(lèi): solr.ASCIIFoldingFilterFactory
參數(shù):
(boolean,默認(rèn)為false)如果為true,則保留原始標(biāo)記:“thé” - >“the”,“thé”
示例:
<analyzer>
<tokenizer class="solr.WhitespaceTokenizer"/>
<filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="false" />
</analyzer>
輸入: “á”(Unicode 字符 00E1)
輸出: “a”(ASCII 字符 97)
實(shí)現(xiàn)了 Beider-Morse Phonetic Matching (BMPM) 算法,該算法允許識(shí)別相似的名稱(chēng),即使它們拼寫(xiě)不同或使用不同的語(yǔ)言。有關(guān)如何工作的更多信息,請(qǐng)參見(jiàn)拼音匹配部分。
Tip:BeiderMorseFilter 由于對(duì) BMPM 算法 3.04 版本的更新而改變了其在 Solr 5.0 中的行為。舊版本的 Solr 實(shí)現(xiàn)了 BMPM 版本 3.00 (參見(jiàn) http://stevemorse.org/phoneticinfo.htm)。使用此過(guò)濾器與早期版本的 Solr 建立的任何索引都需要重建。
工廠(chǎng)類(lèi): solr.BeiderMorseFilterFactory
參數(shù):
名字的類(lèi)型。有效值是 GENERIC、ASHKENAZI 或 SEPHARDIC。如果不是處理 Ashkenazi 或 Sephardic 名字,請(qǐng)使用 GENERIC。
適用的規(guī)則類(lèi)型。有效值是 APPROX 或 EXACT。
定義多個(gè)可能的匹配是否應(yīng)該與管道(“|”)組合。
設(shè)置使用的語(yǔ)言。值 “auto” 將允許過(guò)濾器識(shí)別語(yǔ)言,或者可以提供逗號(hào)分隔列表。
示例:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.BeiderMorseFilterFactory" nameType="GENERIC" ruleType="APPROX" concat="true" languageSet="auto">
</filter>
</analyzer>
該過(guò)濾器使用經(jīng)典 Tokenizer 的輸出,并從所有格中去除首字母縮寫(xiě)詞和 “s” 的句號(hào)。
工廠(chǎng)類(lèi): solr.ClassicFilterFactory
參數(shù):無(wú)
示例:
<analyzer>
<tokenizer class="solr.ClassicTokenizerFactory"/>
<filter class="solr.ClassicFilterFactory"/>
</analyzer>
輸入:"I.B.M. cat’s can’t"
Tokenizer 過(guò)濾: "I.B.M", "cat’s", "can’t"
輸出:"IBM", "cat", "can’t"
此過(guò)濾器通過(guò)將常用標(biāo)記(如 "停止單詞" 和 "常規(guī)標(biāo)記")組合在一起來(lái)創(chuàng)建詞匯組合。這對(duì)創(chuàng)建包含常用詞的短語(yǔ)查詢(xún)非常有用,如 “cat”。Solr 通常會(huì)忽略在查詢(xún)短語(yǔ)中的停止單詞,因此搜索 “the cat” 會(huì)返回單詞 “cat” 的所有匹配。
工廠(chǎng)類(lèi): solr.CommonGramsFilterFactory
參數(shù):
(.txt 格式的常用單詞文件)提供常用單詞文件的名稱(chēng),例如stopwords.txt
。
(可選)如果停用詞表已經(jīng)為 Snowball 格式化,您可以指定format="snowball"
Solr 可以讀取停用詞文件。
(boolean 類(lèi)型值)如果為 true,則在將它們與常用單詞文件進(jìn)行比較時(shí),該過(guò)濾器將忽略單詞的大小寫(xiě)。默認(rèn)值是false。
示例:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/>
</analyzer>
輸入:"the Cat"
Tokenizer 過(guò)濾: "the", "Cat"
輸出: “the_cat”
整理允許以對(duì)語(yǔ)言敏感的方式排序文本。它通常用于排序,但也可以用于高級(jí)搜索。我們?cè)?Unicode 排序部分詳細(xì)介紹了這一點(diǎn)。
實(shí)現(xiàn)了 Daitch-Mokotoff Soundex 算法,該算法允許識(shí)別相似的名稱(chēng),即使它們拼寫(xiě)有所不同。有關(guān)如何工作的更多信息,請(qǐng)參見(jiàn)拼音匹配部分。
工廠(chǎng)類(lèi): solr.DaitchMokotoffSoundexFilterFactory
參數(shù):
(true / false)如果為 true(默認(rèn)),則新的語(yǔ)音標(biāo)記被添加到流中。否則,令牌替換為語(yǔ)音等價(jià)物。將其設(shè)置為 false 將啟用拼音匹配,但目標(biāo)單詞的確切拼寫(xiě)可能不匹配。
示例:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.DaitchMokotoffSoundexFilterFactory" inject="true"/>
</analyzer>
這個(gè)過(guò)濾器使用 DoubleMetaphone 編碼算法從共同性-編解碼器創(chuàng)建令牌。有關(guān)更多信息,請(qǐng)參閱拼音部分。
工廠(chǎng)類(lèi): solr.DoubleMetaphoneFilterFactory
參數(shù):
(true / false)如果為true(默認(rèn)),則新的語(yǔ)音標(biāo)記被添加到流中。否則,令牌替換為語(yǔ)音等價(jià)物。將其設(shè)置為 false 將啟用拼音匹配,但目標(biāo)單詞的確切拼寫(xiě)可能不匹配。
(整數(shù))要生成的代碼的最大長(zhǎng)度。
示例:
注入(true)的默認(rèn)行為:保留原始標(biāo)記并將語(yǔ)音標(biāo)記添加到同一位置。
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.DoubleMetaphoneFilterFactory"/>
</analyzer>
輸入: "four score and Kuczewski"
Tokenizer 過(guò)濾:"four"(1), "score"(2), "and"(3), "Kuczewski"(4)
輸出: "four"(1), "FR"(1), "score"(2), "SKR"(2), "and"(3), "ANT"(3), "Kuczewski"(4), "KSSK"(4), "KXFS"(4)
語(yǔ)音標(biāo)記的位置增量為 0,表示它們與它們從之前導(dǎo)出的標(biāo)記位于相同的位置。請(qǐng)注意,“Kuczewski” 有兩個(gè)編碼,它們?cè)谕晃恢锰砑印?br>
示例:
放棄原始標(biāo)記(inject="false")。
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/>
</analyzer>
輸入: "four score and Kuczewski"
Tokenizer 過(guò)濾: "four"(1), "score"(2), "and"(3), "Kuczewski"(4)
輸出:"FR"(1), "SKR"(2), "ANT"(3), "KSSK"(4), "KXFS"(4)
請(qǐng)注意,“Kuczewski” 有兩個(gè)編碼,在相同位置添加。
這個(gè)過(guò)濾器在給定的范圍內(nèi)生成大小的邊緣 n-gram 標(biāo)記。
工廠(chǎng)類(lèi): solr.EdgeNGramFilterFactory
參數(shù):
(整數(shù),默認(rèn)1)最小 gram 大小。
(整數(shù),默認(rèn)1)最大 gram 大小。
示例:
默認(rèn)行為。
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory"/>
</analyzer>
輸入:"four score and twenty"
Tokenizer 過(guò)濾:"four", "score", "and", "twenty"
輸出:"f", "s", "a", "t"
示例:
范圍從1到4。
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="4"/>
</analyzer>
輸入: "four score"
Tokenizer 過(guò)濾器:"four", "score"
輸出:"f", "fo", "fou", "four", "s", "sc", "sco", "scor"
示例:
范圍從4到6。
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="4" maxGramSize="6"/>
</analyzer>
輸入:"four score and twenty"
Tokenizer 過(guò)濾:"four", "score", "and", "twenty"
輸出:"four", "scor", "score", "twen", "twent", "twenty"
這個(gè)過(guò)濾器把復(fù)數(shù)的英語(yǔ)單詞變成單數(shù)形式。
工廠(chǎng)類(lèi): solr.EnglishMinimalStemFilterFactory
參數(shù):無(wú)
示例:
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.EnglishMinimalStemFilterFactory"/>
</analyzer>
輸入: "dogs cats"
Tokenizer 過(guò)濾: "dogs", "cats"
輸出:"dog", "cat"
該過(guò)濾器從單詞中移除奇異的所有格(尾隨的 s')。請(qǐng)注意,復(fù)數(shù)的所有格,例如 “divers' snorkels” 中的“ s' ”,并沒(méi)有被這個(gè)過(guò)濾器移除。
工廠(chǎng)類(lèi): solr.EnglishPossessiveFilterFactory
參數(shù):無(wú)
示例:
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
</analyzer>
輸入: "Man’s dog bites dogs' man"
Tokenizer 過(guò)濾:"Man’s", "dog", "bites", "dogs'", "man"
輸出:"Man", "dog", "bites", "dogs'", "man"
該過(guò)濾器輸出單個(gè)令牌,該令牌是經(jīng)過(guò)排序和去重的一組輸入令牌的串聯(lián)。這對(duì)集群/鏈接用例很有用。
工廠(chǎng)類(lèi): solr.FingerprintFilterFactory
參數(shù):
用于分隔令牌的字符組合成單個(gè)輸出令牌。默認(rèn)為 “”(空格字符)。
摘要輸出令牌的最大長(zhǎng)度。如果超過(guò),則不會(huì)輸出令牌。默認(rèn)為1024。
示例:
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.FingerprintFilterFactory" separator="_" />
</analyzer>
輸入: "the quick brown fox jumped over the lazy dog"
Tokenizer 過(guò)濾器: “the”,“quick”,“brown”,“fox”,“jumped”,“over”,“the”,“l(fā)azy”,“dog”
輸出:"brown_dog_fox_jumped_lazy_over_quick_the"
此過(guò)濾器必須包含在索引時(shí)間分析器規(guī)范中,該規(guī)范至少包含一個(gè)圖形識(shí)別過(guò)濾器,包括同義詞圖形過(guò)濾器和字符分隔符圖形過(guò)濾器。
工廠(chǎng)類(lèi): solr.FlattenGraphFilterFactory
參數(shù):無(wú)
有關(guān)同義詞圖形篩選器和字符分隔符圖形篩選器,請(qǐng)參閱下面的示例。
在 Hunspell Stem Filter 提供幾種語(yǔ)言的支持。您必須為您希望用于 Hunspell Stem Filter 的每種語(yǔ)言提供 dictionary(.dic)和 rules(.aff)文件。
你可以在這里下載這些語(yǔ)言文件。
請(qǐng)注意,根據(jù)提供的詞典和規(guī)則文件的質(zhì)量,結(jié)果會(huì)有很大差異。例如,一些語(yǔ)言只有一個(gè)最小的單詞列表,沒(méi)有形態(tài)信息。另一方面,對(duì)于沒(méi)有詞干的語(yǔ)言,但有一個(gè)廣泛的字典文件,Hunspell 詞干可能是一個(gè)不錯(cuò)的選擇。
工廠(chǎng)類(lèi): solr.HunspellStemFilterFactory
參數(shù):
(必填)字典文件的路徑。
(必需)規(guī)則文件的路徑。
(boolean)控制匹配是否區(qū)分大小寫(xiě)。默認(rèn)值是 false。
(boolean)控制詞綴解析是否嚴(yán)格。如果為 true,則讀取附加規(guī)則時(shí)出錯(cuò)將導(dǎo)致 ParseException,否則將被忽略。默認(rèn)值是 true。
示例:
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.HunspellStemFilterFactory"
dictionary="en_GB.dic"
affix="en_GB.aff"
ignoreCase="true"
strictAffixParsing="true" />
</analyzer>
輸入: "jump jumping jumped"
Tokenizer 過(guò)濾器:"jump", "jumping", "jumped"
輸出:"jump", "jump", "jump"
這個(gè)過(guò)濾器重建由于字段測(cè)試中的換行符或其他介入的空白字符而被標(biāo)記為兩個(gè)標(biāo)記的連字符。如果令牌以連字符結(jié)尾,則使用下面的令牌連接,連字符將被丟棄。
請(qǐng)注意,為使此過(guò)濾器正常工作,上游標(biāo)記化程序不得刪除尾部連字符。這個(gè)過(guò)濾器通常只在索引時(shí)有用。
工廠(chǎng)類(lèi): solr.HyphenatedWordsFilterFactory
參數(shù):無(wú)
示例:
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.HyphenatedWordsFilterFactory"/>
</analyzer>
輸入:"A hyphen- ated word"
Tokenizer 過(guò)濾: "A", "hyphen-", "ated", "word"
輸出:"A", "hyphenated", "word"
此過(guò)濾器是一種自定義 Unicode 規(guī)范化表單,它應(yīng)用可在 unicode 技術(shù)報(bào)告30中指定的 NFKC_Casefold,以及在 ICU 標(biāo)準(zhǔn)件2過(guò)濾器中所描述的標(biāo)準(zhǔn)化格式化形式。此過(guò)濾器是 ASCII 折疊過(guò)濾器,小寫(xiě)過(guò)濾器和 ICU 規(guī)范器2過(guò)濾器的組合行為的更好替代品。NFKC_Casefold
要使用此過(guò)濾器,請(qǐng)參閱 solr/contrib/analysis-extras/README.txt 以獲取您需要添加到您的 solr_home/lib 的 jar 的說(shuō)明。有關(guān)添加 jar 的更多信息,請(qǐng)參閱Solrconfig 中的 Lib 指令部分。
工廠(chǎng)類(lèi): solr.ICUFoldingFilterFactory
參數(shù):無(wú)
示例:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ICUFoldingFilterFactory"/>
</analyzer>
有關(guān)此規(guī)范化表單的詳細(xì)信息,請(qǐng)參閱:http://www.unicode.org/reports/tr30/tr30-4.html。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: