我有一个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。
非常感谢任何帮助。
更新:
答案 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;字符限制不允许详述。