我正在使用Solr並希望瞭解EdgeNGramFilterFactory的工作原理。Solr nGram過濾器minGramSize - 僅包含2個字符的單詞令牌
例如,我在尋找一個術語「1個TB」。請注意,我沒有幾個產品具有我正在搜索的字段的屬性。
這裏是指數時間應用於該字段類型的過濾器。
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="10" />
現在,當我搜索術語「1 tb」時,我沒有得到期望的結果。
我有幾個產品,術語「500萬像素」,當我搜索「5兆」,它給我的結果。後來我發現它不適用於「5我」。並沒有給出結果。
如果我刪除NGRAM過濾器,它工作正常。而且,如果我們設置minGramSize =「1」,那麼查詢「1 tb」就可以正常工作。
我是假設,對於長期TB,令牌TB應該是有效的。但是,當我應用minGramSize爲2時,它似乎不會創建!
有人可以解釋爲什麼嗎?
這裏是在架構中定義的字段。
<fieldType name="AttributesField" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="10" />
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
你分析Solr管理頁面上的一樣嗎?該字段使用的確切字段類型是什麼? –
我創建了文本字段類型來應用單獨的過濾器和標記需要。 – Krunal
你能描述一下嗎?它有什麼? –