0

我有一个 solr 搜索应用程序,它在字段值既是驼峰形式又是连字符的特定情况下失败。尽管 solr 中的字段分析页面与条款匹配,但这些案例单独工作正常,尽管没有匹配项。

例如:

字段myField包含值camelCase-hyphen使用驼峰连字符的查询值(注意这不是驼峰大小写),尽管我的 WordDelimiterFilterFactory 设置连接了整个术语,然后是 LowerCaseFilterFactory,但仍然没有匹配项。

分析页面显示匹配,但执行实际搜索不会产生任何结果。见下文。

我的字段类型分析是

<fieldtype name="textBlock" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
                <tokenizer class="solr.WhitespaceTokenizerFactory"/>
                <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
                        ignoreCase="true" expand="true"/>
                <filter class="solr.StopFilterFactory" ignoreCase="true"
                        words="stopwords.txt"/>
                <filter class="solr.WordDelimiterFilterFactory"
                        generateWordParts="1" generateNumberParts="1"
                        catenateWords="1" catenateNumbers="1" catenateAll="1" preserveOriginal="1"/>
                <filter class="solr.LowerCaseFilterFactory"/>
                <filter class="solr.EnglishPorterFilterFactory"
                        protected="protwords.txt"/>
                <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
        </analyzer>
        <analyzer type="query">
                <tokenizer class="solr.WhitespaceTokenizerFactory"/>
                <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
                        ignoreCase="true" expand="true"/>
                <filter class="solr.StopFilterFactory" ignoreCase="true"
                        words="stopwords.txt"/>
                <filter class="solr.WordDelimiterFilterFactory"
                        generateWordParts="1" generateNumberParts="1"
                        catenateWords="1" catenateNumbers="1" catenateAll="1" preserveOriginal="1"/>
                <filter class="solr.LowerCaseFilterFactory"/>
                <filter class="solr.EnglishPorterFilterFactory"
                        protected="protwords.txt"/>
                <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
        </analyzer>
</fieldtype>

我正在使用 Solr 3.6.1 和 edismax。

任何帮助将非常感激。

更新:

详细字段分析输出

调试响应

4

1 回答 1

0

查看您在此处发布的调试响应Debug Response,我可以看到您的搜索与至少一个文档匹配,因此它可以按您的预期工作。

    <result name="response" numFound="1" start="0">
      <doc>
        <str name="a_searchable_name_t">camelcase-hyphen</str>
      </doc>
    </result>

看看numFound=1它有一个匹配,但我猜你仍然认为你没有得到任何结果。对不起,我想将此作为后续评论发布,但格式和字符限制不允许详细说明。

于 2012-08-16T15:49:44.673 回答