首页 > 解决方案 > SOLR 6.6:具有上下文过滤的建议器不返回结果

问题描述

以前,我曾建议使用上下文过滤的配置:

<searchComponent name="suggest" class="solr.SpellCheckComponent">
        <str name="queryAnalyzerFieldType">text_spell</str>
        <lst name="spellchecker">
            <str name="name">default</str>
            <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
            <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
            <str name="field">autosuggest_en</str>
            <str name="contextField">availableForWarehouses_string_mv</str>
            <str name="buildOnCommit">true</str>
            <str name="buildOnOptimize">true</str>
            <str name="accuracy">0.35</str>
        </lst>
        <lst name="spellchecker">
            <str name="name">de</str>
            <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
            <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
            <str name="field">autosuggest_de</str>
            <str name="contextField">availableForWarehouses_string_mv</str>
            <str name="buildOnCommit">true</str>
            <str name="buildOnOptimize">true</str>
            <str name="accuracy">0.35</str>
        </lst>
        <lst name="spellchecker">
            <str name="name">en</str>
            <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
            <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
            <str name="field">autosuggest_en</str>
            <str name="contextField">availableForWarehouses_string_mv</str>
            <str name="buildOnCommit">true</str>
            <str name="buildOnOptimize">true</str>
            <str name="accuracy">0.35</str>
        </lst>
    </searchComponent>

    <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
        <lst name="defaults">
            <str name="spellcheck">true</str>
            <str name="spellcheck.dictionary">default</str>
            <str name="spellcheck.onlyMorePopular">true</str>
            <str name="spellcheck.count">5</str>
            <str name="spellcheck.collate">true</str>
        </lst>
        <arr name="components">
            <str>suggest</str>
        </arr>
    </requestHandler>

在 solr 管理控制台中,我能够检索结果:

在此处输入图像描述

现在,我创建了包括上下文过滤的配置:

<searchComponent name="hmmSuggest" class="solr.SuggestComponent">
        <lst name="suggester">
            <str name="name">default</str>
            <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
            <str name="dictionaryImpl">DocumentDictionaryFactory</str>
            <str name="field">autosuggest_en</str>
            <str name="contextField">availableForWarehouses_string_mv</str>
            <str name="suggestAnalyzerFieldType">string</str>
            <str name="buildOnStartup">true</str>
            <str name="buildOnCommit">true</str>
            <str name="buildOnOptimize">true</str>
        </lst>
        <lst name="suggester">
            <str name="name">de</str>
            <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
            <str name="dictionaryImpl">DocumentDictionaryFactory</str>
            <str name="field">autosuggest_de</str>
            <str name="contextField">availableForWarehouses_string_mv</str>
            <str name="suggestAnalyzerFieldType">string</str>
            <str name="buildOnStartup">true</str>
            <str name="buildOnCommit">true</str>
            <str name="buildOnOptimize">true</str>
        </lst>
        <lst name="suggester">
            <str name="name">en</str>
            <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
            <str name="dictionaryImpl">DocumentDictionaryFactory</str>
            <str name="field">autosuggest_en</str>
            <str name="contextField">availableForWarehouses_string_mv</str>
            <str name="suggestAnalyzerFieldType">string</str>
            <str name="buildOnStartup">true</str>
            <str name="buildOnCommit">true</str>
            <str name="buildOnOptimize">true</str>
        </lst>
    </searchComponent>

    <requestHandler name="/hmmSuggest" class="solr.SearchHandler" startup="lazy">
        <lst name="defaults">
            <str name="suggest">true</str>
            <str name="suggest.count">5</str>
            <str name="suggest.dictionary">default</str>
            <str name="suggest.collate">true</str>
            <str name="suggest.onlyMorePopular">true</str>
        </lst>
        <arr name="components">
            <str>hmmSuggest</str>
        </arr>
    </requestHandler>

但我没有得到任何结果。

在此处输入图像描述

我是否需要在我的配置中添加更多内容,或者可能是什么问题,或者我如何检查问题?

测试 1

我尝试使用类 spellcheckcomponent 而不是建议器,但我仍然得到空结果。

<searchComponent name="hmmSuggest" class="solr.SpellCheckComponent">
        <str name="queryAnalyzerFieldType">text_spell</str>
        <lst name="spellchecker">
            <str name="name">default</str>
            <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
            <str name="dictionaryImpl">DocumentDictionaryFactory</str>
            <str name="field">autosuggest_en</str>
            <str name="contextField">availableForWarehouses_string_mv</str>
            <str name="suggestAnalyzerFieldType">string</str>
            <str name="buildOnStartup">true</str>
            <str name="buildOnCommit">true</str>
            <str name="buildOnOptimize">true</str>
            <str name="accuracy">0.35</str>
        </lst>
        <lst name="spellchecker">
            <str name="name">de</str>
            <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
            <str name="dictionaryImpl">DocumentDictionaryFactory</str>
            <str name="field">autosuggest_de</str>
            <str name="contextField">availableForWarehouses_string_mv</str>
            <str name="suggestAnalyzerFieldType">string</str>
            <str name="buildOnStartup">true</str>
            <str name="buildOnCommit">true</str>
            <str name="buildOnOptimize">true</str>
            <str name="accuracy">0.35</str>
        </lst>
        <lst name="spellchecker">
            <str name="name">en</str>
            <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
            <str name="dictionaryImpl">DocumentDictionaryFactory</str>
            <str name="field">autosuggest_en</str>
            <str name="contextField">availableForWarehouses_string_mv</str>
            <str name="suggestAnalyzerFieldType">string</str>
            <str name="buildOnStartup">true</str>
            <str name="buildOnCommit">true</str>
            <str name="buildOnOptimize">true</str>
            <str name="accuracy">0.35</str>
        </lst>
    </searchComponent>

    <requestHandler name="/hmmSuggest" class="solr.SearchHandler" startup="lazy">
        <lst name="defaults">
            <str name="spellcheck">true</str>
            <str name="spellcheck.count">5</str>
            <str name="spellcheck.dictionary">default</str>
            <str name="spellcheck.collate">true</str>
            <str name="spellcheck.onlyMorePopular">true</str>
        </lst>
        <arr name="components">
            <str>hmmSuggest</str>
        </arr>
    </requestHandler>

标签: solrautosuggest

解决方案


推荐阅读