Solr - 未检测到建议器自定义字段&多个字段无法使用

时间:2017-06-30 09:46:01

标签: solr

目标

尝试在Solr中实现自动建议器。来自titlecontent字段的额外建议的字段。

到目前为止的进展

我按照官方的Solr指南来实现该功能,但是已经停留了很长时间,因为它抱怨自定义字段suggestType未定义。

经过长时间的尝试后,我决定将字段类型添加到 managed-schema.xml 而不是 schema.xml ,这样就可以了!

到目前为止,它仅在我将建议字段设置为content时才有效,但是,我们希望使用2个字段来建议titlecontent。< / 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"/>

问题

  • 为什么只有将自定义字段类型添加到 managed-schema.xml 而不是 schema.xml 时,它才有效?根据我的理解,不应手动编辑 managed-schema.xml
  • titlecontent字段映射到自定义字段textSuggest后,似乎没有显示任何结果。我想知道我错过了什么。

感谢。

1 个答案:

答案 0 :(得分:0)

您的副本字段定义中似乎有拼写错误。 “dest”属性为 suggestField ,但您之前创建的字段称为 suggestText