【问题标题】:Apache Solr suggestion suggest only if search term have missing last charApache Solr 建议仅在搜索词缺少最后一个字符时才建议
【发布时间】:2017-11-13 20:21:05
【问题描述】:

我在使用 Broadleaf solr 搜索时遇到了非常奇怪的问题,请参阅以下屏幕截图

这是我用拼写错误的术语“mesur”搜索然后 solr 搜索提供拼写更正结果,但看到结果所有结果似乎都缺少最后一个字符。

现在看下面的第二个屏幕截图

现在我已将“e”附加到搜索词及其“mesure”,然后它没有提供任何结果,任何有良好 solr 经验的人都可以帮助我解决这个问题,尤其是为什么 solr 缺少建议中的最后一个字符?。

【问题讨论】:

  • 请分享您的 schema.xml 和 solrconfig.xml 的一部分以用于 /suggest 请求处理程序

标签: search solr


【解决方案1】:

我已经通过更改 schema.xml 解决了我的问题,我遇到了字段类型的问题,以前是这样的

<fieldType name="text_general_partial" class="solr.TextField">
        <analyzer type="index">
            <tokenizer class="solr.StandardTokenizerFactory" />

            <!-- Partial Word matcher -->
            <filter class="solr.NGramFilterFactory" minGramSize="3"
                maxGramSize="1000" />
            <filter class="solr.ReverseStringFilterFactory" />

            <filter class="solr.NGramFilterFactory" minGramSize="3"
                maxGramSize="1000" />
            <filter class="solr.ReverseStringFilterFactory" />
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

            <filter class="solr.LowerCaseFilterFactory" />
            <filter class="solr.TrimFilterFactory" />
            <filter class="solr.SnowballPorterFilterFactory" language="English" />
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.StandardTokenizerFactory" />
            <filter class="solr.WordDelimiterFilterFactory"
                generateWordParts="1" generateNumberParts="1" catenateWords="0"
                catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" />

            <filter class="solr.LowerCaseFilterFactory" />
            <filter class="solr.TrimFilterFactory" />
            <filter class="solr.SnowballPorterFilterFactory" language="English" />
        </analyzer>
    </fieldType>

但我已更改为如下,现在可以正常工作了

<fieldType name="text_general_partial" class="solr.TextField">
        <analyzer type="index">
            <tokenizer class="solr.StandardTokenizerFactory" />

            <!-- Partial Word matcher -->
            <filter class="solr.NGramFilterFactory" minGramSize="3"
                maxGramSize="1000" />
            <filter class="solr.ReverseStringFilterFactory" />

            <filter class="solr.NGramFilterFactory" minGramSize="3"
                maxGramSize="1000" />
            <filter class="solr.ReverseStringFilterFactory" />
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
             language="English" />
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.StandardTokenizerFactory" />
            <filter class="solr.WordDelimiterFilterFactory"
                generateWordParts="1" generateNumberParts="1" catenateWords="0"
                catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" />language="English" />
        </analyzer>
    </fieldType>

根据 xml 架构删除了过滤器,现在可以正常工作了

【讨论】:

    猜你喜欢
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多