目标
尝试在Solr中实现自动建议器。来自title
和content
字段的额外建议的字段。
到目前为止的进展
我按照官方的Solr指南来实现该功能,但是已经停留了很长时间,因为它抱怨自定义字段suggestType
未定义。
经过长时间的尝试后,我决定将字段类型添加到 managed-schema.xml 而不是 schema.xml ,这样就可以了!
到目前为止,它仅在我将建议字段设置为content
时才有效,但是,我们希望使用2个字段来建议title
和content
。< / p>
遵循的步骤
1)在 managed-schema xml:
中添加自定义字段类型<fieldType name="suggestType" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="[^a-zA-Z0-9]" replacement=" " />
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
2)添加在 schema.xml 中使用自定义字段类型的自定义字段:
<field name="suggestText" type="suggestType" stored="true" indexed="true" />
3)添加&#39;建议&#39;处理器 solr-config.xml :
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">fuzzySuggester</str>
<str name="lookupImpl">FuzzyLookupFactory</str>
<str name="storeDir">fuzzy_suggestions</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">suggestText</str>
<str name="suggestAnalyzerFieldType">suggestType</str>
<str name="buildOnStartup">false</str>
<str name="buildOnCommit">false</str>
</lst>
</searchComponent>
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy" >
<lst name="defaults">
<str name="suggest">true</str>
<str name="suggest.dictionary">analyzingSuggester</str>
<str name="suggest.onlyMorePopular">true</str>
<str name="suggest.count">10</str>
<str name="suggest.collate">true</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
4)复制两个字段&#39; title&#39;和&#39;内容&#39; to&#39; suggestText&#39;在 schema.xml :
<copyField source="title" dest="suggestField"/>
<copyField source="content" dest="suggestField"/>
问题
title
和content
字段映射到自定义字段textSuggest
后,似乎没有显示任何结果。我想知道我错过了什么。感谢。
答案 0 :(得分:0)
您的副本字段定义中似乎有拼写错误。 “dest”属性为 suggestField ,但您之前创建的字段称为 suggestText 。