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

时间:2017-09-20 11:38:09

标签: solr

  1. 列表项
  2. Solr version - 6.6.0
  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 个答案:

答案 0 :(得分:1)

通常这是客户端的变化。 您可以在达到配置的字符数量时发送API调用。

Solr方:

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

<?xml version="1.0" encoding="utf-8"?>
<modification>
    <name>Modify PowerBy Text</name>
    <version>1.0</version>
    <author>Shehzad</author>

    <file path="catalog/language/en-gb/common/footer.php">
        <operation>
            <search>
            <![CDATA[
            $_['text_powered']      = 'Powered By <a href="http://www.opencart.com">OpenCart</a><br /> %s &copy; %s';
            ]]></search>
            <add position="replace"><![CDATA[
            $_['text_powered']      = 'Powered By <a href="http://www.facebook.com/shehzad47">Shehzad</a><br /> %s &copy; %s';
            ]]></add>
        </operation>
    </file>  
</modification>

给定N您想要的字符数量: 如果你真的想做那个Solr方面,那么你可以明确地配置一个自动完成字段(用ngram的最小值为N的edgeNgram标记过滤器进行分析)。