1

を含むフィールドがあります

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

1 に答える 1

1

おそらく唯一の理由は:-

<filter class="solr.ReversedWildcardFilterFactory" />

ドキュメント:-

トークンを逆にして、より高速な先頭のワイルドカードおよびプレフィックスクエリを提供するフィルタ。このフィルターをインデックスアナライザーに追加しますが、クエリアナライザーには追加しません。標準のSolrクエリパーサー(SolrQuerySyntax)は、これを使用してワイルドカードとプレフィックスクエリを逆にし、パフォーマンスを向上させます(たとえば、myfield:fooをmyfield:oofに変換します)。衝突や誤った一致を回避するために、逆にされたトークンは、インデックス付けされたテキストに表示されるべきではないプレフィックスでインデックス付けされます。

したがって、ワイルドカードでは機能するようですが、通常のクエリでは機能しないようです。
クエリアナライザから削除して確認することができます。

于 2012-12-20T12:27:47.230 に答える