solr查询找不到单词

时间:2012-12-20 12:20:37

标签: solr schema wildcard

我有一个包含

的字段
... 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>

导致相同的结果

analyze result

分析器似乎匹配,但我的查询结果保持空白

查询调试:

<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>

1 个答案:

答案 0 :(得分:1)

可能唯一的原因可能是: -

<filter class="solr.ReversedWildcardFilterFactory" />

Documentation: -

  

一个过滤器,可以反转令牌以提供更快的前导通配符和   前缀查询。 将此过滤器添加到索引分析器,但不是   查询分析器。标准的Solr查询解析器(SolrQuerySyntax)将会   使用它来反转通配符和前缀查询以提高性能   (例如,将myfield: foo翻译成myfield:oof )。避免   碰撞和错误匹配,反转的令牌用a索引   不应出现在索引文本中的前缀。

因此它似乎适用于通配符,但不适用于普通查询 您可以尝试将其从查询分析器中删除并检查。