使用连字符和驼峰案例的Solr搜索未返回预期结果

时间:2012-08-15 11:04:26

标签: solr edismax hyphen

我有一个solr搜索应用程序,在特定情况下失败,其中字段值是camelcased和连字符。虽然solr中的字段分析页面与术语匹配,但这些案例单独使用虽然没有匹配。

例如:

字段 myField 包含值 camelCase-hyphen 。使用 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。

非常感谢任何帮助。

更新:

Verbose field analysis output

Debug response

1 个答案:

答案 0 :(得分:0)

查看此处Debug Response发布的调试响应,我可以看到您的搜索至少匹配一个文档,因此它正如您期望的那样工作。

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

看看numFound=1它有匹配,但我猜你仍然认为你没有得到任何结果。我想发布这个作为后续评论,但格式和&amp;字符限制不允许详述。