我有一个 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。
任何帮助将非常感激。
更新: