我有一个包含
的字段... Sie kennen zentrale Stationen des Lebenswegs Muhammads. • Sie ke ...
我已经像这样配置了
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" generateNumberParts="0" catenateWords="1"
catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"
splitOnNumerics="0" stemEnglishPossessive="0"/>
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.ReversedWildcardFilterFactory" />
<filter class="solr.LengthFilterFactory" min="1" max="100" />
</analyzer>
</fieldType>
但是
q=volltext:lebenswegs
q=volltext:Lebenswegs
没有结果,为什么?
q=volltext:lebensweg*
找到文件
我正在使用solr 1.4
编辑:
拆分配置
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" generateNumberParts="0" catenateWords="1"
catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"
splitOnNumerics="0" stemEnglishPossessive="0"/>
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.ReversedWildcardFilterFactory" />
<filter class="solr.LengthFilterFactory" min="1" max="100" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" generateNumberParts="0" catenateWords="1"
catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"
splitOnNumerics="0" stemEnglishPossessive="0"/>
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.LengthFilterFactory" min="1" max="100" />
</analyzer>
</fieldType>
导致相同的结果
分析器似乎匹配,但我的查询结果保持空白
查询调试:
<lst name="debug">
<str name="rawquerystring">volltext:Lebenswegs</str>
<str name="querystring">volltext:Lebenswegs</str>
<str name="parsedquery">volltext:lebenswegs</str>
<str name="parsedquery_toString">volltext:lebenswegs</str>
<lst name="explain"/>
<str name="QParser">LuceneQParser</str>
<lst name="timing">
<double name="time">1.0</double>
<lst name="prepare">
<double name="time">1.0</double>
<lst name="org.apache.solr.handler.component.QueryComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.FacetComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.MoreLikeThisComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.HighlightComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.StatsComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.DebugComponent">
<double name="time">1.0</double>
</lst>
</lst>
<lst name="process">
<double name="time">0.0</double>
<lst name="org.apache.solr.handler.component.QueryComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.FacetComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.MoreLikeThisComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.HighlightComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.StatsComponent">
<double name="time">0.0</double>
</lst>
<lst name="org.apache.solr.handler.component.DebugComponent">
<double name="time">0.0</double>
</lst>
</lst>
</lst>
</lst>
答案 0 :(得分:1)
可能唯一的原因可能是: -
<filter class="solr.ReversedWildcardFilterFactory" />
一个过滤器,可以反转令牌以提供更快的前导通配符和 前缀查询。 将此过滤器添加到索引分析器,但不是 查询分析器。标准的Solr查询解析器(SolrQuerySyntax)将会 使用它来反转通配符和前缀查询以提高性能 (例如,将myfield: foo翻译成myfield:oof )。避免 碰撞和错误匹配,反转的令牌用a索引 不应出现在索引文本中的前缀。
因此它似乎适用于通配符,但不适用于普通查询 您可以尝试将其从查询分析器中删除并检查。