Solr中的前后边缘图
我想使用EdgeNGramFilterFactory从正面和背面生成Edge Ngram。前面我用的是Solr中的前后边缘图,solr,lucene,tokenize,n-gram,Solr,Lucene,Tokenize,N Gram,我想使用EdgeNGramFilterFactory从正面和背面生成Edge Ngram。前面我用的是 <filter class="solr.EdgeNGramFilterFactory" maxGramSize="20" minGramSize="4"/> <filter class="solr.ReverseStringFilterFactory"/> <filter class="solr.EdgeNGramFilterFactory" min
<filter class="solr.EdgeNGramFilterFactory" maxGramSize="20" minGramSize="4"/>
<filter class="solr.ReverseStringFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="4" maxGramSize="15"/>
<filter class="solr.ReverseStringFilterFactory"/>
更新2:包括样本输入和预期输出
输入字符串
华盛顿
所需边缘图
Was
,Wash
,Washi
Washington
,ashington
,shington
,hington
gton
,ton
如果您创建自定义版本的EdgeNGramFilterFactory(java,然后将其插入schema.xml),并从后面创建额外的NGRAM,则可以在单个分析器链中完成此操作
否则,您需要将copyField转换为具有单独链的附加字段
老实说,我觉得第一个选项太麻烦了,但这是肯定的。你能举个例子吗?@SanjayDutt我在问题中添加了一个带有单独分析器的例子。谢谢,但我希望你为给定的输入举个例子,你想要的预期输出结果是什么。@SanjayDutt抱歉。我以为您希望在项目中使用一个示例:)
<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"/>