我有一个solr搜索应用程序,它在字段值同时使用camelcased和hyphenated的特定情况下失败。尽管solr中的字段分析页面与术语相匹配,但这些案例各自都很好,尽管在一起没有匹配项。
例如:
字段myField包含值camelCase连字符。尽管我的WordDelimiterFilterFactory设置将整个术语连接起来,然后再连接一个LowerCaseFilterFactor,但查询值为camelcase连字符(注意这不是驼峰大小写)时,没有匹配项。
分析页面显示匹配项,但执行实际搜索不会产生任何结果。请参见下文。
我的字段类型分析是
<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条答案
按热度按时间sxpgvts31#
查看您在此处发布的调试响应Debug Response,我可以看到您的搜索至少与一个文档匹配,因此它如您所期望的那样工作。
看看
numFound=1
,它正在进行匹配,但我想你仍然认为你没有得到任何结果。对不起,我想把它作为后续评论发布,但格式和字符限制不允许详细说明。