代码之家  ›  专栏  ›  技术社区  ›  Dev

如何限制solr在3个字母后建议记录

  •  0
  • Dev  · 技术社区  · 7 年前
    1. 列表项

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

    变更 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 回复  |  直到 7 年前
        1
  •  1
  •   Alessandro Benedetti    7 年前

    通常这是一种客户端的更改。

    Solr侧:

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

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