我在文档中添加了一个新字段,说“自动完成”并从其他相关密钥复制数据。
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个字母后显示记录吗?
答案 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 © %s';
]]></search>
<add position="replace"><![CDATA[
$_['text_powered'] = 'Powered By <a href="http://www.facebook.com/shehzad47">Shehzad</a><br /> %s © %s';
]]></add>
</operation>
</file>
</modification>
给定N您想要的字符数量: 如果你真的想做那个Solr方面,那么你可以明确地配置一个自动完成字段(用ngram的最小值为N的edgeNgram标记过滤器进行分析)。