我想使用EdgeNGramFilterFactory從正面和背面生成Edge NGrams。對於前我使用Solr中的正面和背面EdgeNGrams
<filter class="solr.EdgeNGramFilterFactory" maxGramSize="20" minGramSize="4"/>
和背部,我使用
<filter class="solr.ReverseStringFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="4" maxGramSize="15"/>
<filter class="solr.ReverseStringFilterFactory"/>
但是,當他們在一個單人分析儀一起使用時,第二組過濾器工廠都作用於的輸出第一個EdgeNGramFilterFactory。
是否可以在單個分析儀中生成正面和背面EdgeNGrams?或者我是否必須創建單獨的分析儀並使用copyField
創建一個包含正面和背面EdgeNGrams的字段?
更新 實施例模式的要求,在下面的評論
<fieldType name="text_suggest_edge" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="12"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="12"/>
</analyzer>
</fieldType>
<fieldType name="text_suggest_edge_end" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ReverseStringFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="12"/>
<filter class="solr.ReverseStringFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ReverseStringFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="12"/>
<filter class="solr.ReverseStringFilterFactory"/>
</analyzer>
</fieldType>
<field name="item_name_edge" type="text_suggest_edge" indexed="true" stored="false" multiValued="true"/>
<field name="item_name_edge_end" type="text_suggest_edge_end" indexed="true" stored="false" multiValued="true"/>
<copyField source="item_name" dest="item_name_edge"/>
<copyField source="item_name" dest="item_name_edge_end"/>
更新2:包含樣本輸入和預期輸出
輸入字符串
Washington
所需邊緣的n-gram
Was
,Wash
,Washi
,... Washington
,ashington
,shington
,hington
... gton
,ton
你能舉一個例子嗎? –
@SanjayDutt我已經爲這個問題添加了一個單獨的分析器的例子。 –
謝謝,但我希望你給出給定輸入的例子,將會是你想要的預期輸出結果。 –