2017-09-20 19 views
0
  1. 列表项
  2. Solr的版本,建议记录 - 6.6.0

我在文档中添加一个新的领域说从其他的“自动完成”和复制数据相关的键。如何限制Solr的后3个字母

变化schema.xml

<field name="autocomplete" type="text_general" indexed="true" stored="true" 
multiValued="true" /> 

<copyField source="a" dest="autocomplete"/> 
<copyField source="b" dest="autocomplete"/> 
<copyField source="c" dest="autocomplete"/> 
<copyField source="d" dest="autocomplete"/> 

变化的solrconfig.xml

<searchComponent name="suggest" class="solr.SuggestComponent"> 
    <lst name="suggester"> 
     <str name="name">infixSuggester</str> 
     <str name="lookupImpl">AnalyzingInfixLookupFactory</str> 
     <str name="dictionaryImpl">DocumentDictionaryFactory</str> 
     <str name="field">autocomplete</str> 
     <str name="contextField">type</str> 
     <str name="suggestAnalyzerFieldType">text_general</str> 
     <str name="buildOnStartup">false</str> 
    </lst> 
    </searchComponent> 

建议者我可以通过它查询和使用上下文过滤器为好。

我可以限制它只显示3个字母输入后的记录吗?

回答

1

通常这会是客户端的变化。 只有在达到配置的字符数量时,才能发送API调用。

Solr的一面:

不幸的是,使用上述分析缀查找策略,这是不可能改变的最小字符为可能的建议。 这是因为,在辅助索引创建可能的建议时,最小的ngram是硬编码为1:

org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java:364 
TokenFilter filter = new EdgeNGramTokenFilter(components.getTokenStream(), 1, minPrefixChars); 

给定N所需的字符量: 如果你真的想这样做Solr的一面,那么你可以做明确地配置一个自动完成字段(用一个边缘分割符号过滤器进行分析,该分割符的最小值为N)。

相关问题