如何限制solr在3个字母后建议记录 列表项 Solr版本-6.6.0

如何限制solr在3个字母后建议记录 列表项 Solr版本-6.6.0,solr,Solr,我在文档中添加了一个新字段,称为“自动完成”,并从其他相关键复制数据 schema.xml中的更改 <field name="autocomplete" type="text_general" indexed="true" stored="true" multiValued="true" /> <copyField source="a" dest="autocomplete"/> <copyField source="b" dest="autocomplete"/

我在文档中添加了一个新字段,称为“自动完成”,并从其他相关键复制数据

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"/>
  <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个字母后显示记录?

通常这是客户端需要进行的更改。 您可以在达到配置的字符数时发送API调用

单方:

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

org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java:364
TokenFilter filter = new EdgeNGramTokenFilter(components.getTokenStream(), 1, minPrefixChars);
给定N个所需的字符数: 如果您真的想在Solr端这样做,那么您可以显式地配置一个自动完成字段(使用一个edgeNgram令牌过滤器进行分析,对于ngram,最小值为N)