1

spring-data-solr(version = 1.4.0.RELEASE) を使用してハイフンを含むフィールドを検索していますが、結果はゼロです。インデックス付きフィールドの 1 つに「Wal-mart」という値が含まれており、「wal」を検索すると正しい結果が得られますが、「wal-」を検索すると結果がゼロになります。前にエスケープ バックスラッシュ文字を追加しようとしましたが、役に立ちませんでした。誰かがここで何が問題なのかアドバイスしてもらえますか?

以下は私のschema.xmlのスナップショットです。

            <fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <!-- in this example, we will only use synonyms at query time
    <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
    -->
    <!-- Case insensitive stop word removal.
    -->
    <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="lang/stopwords_en.txt"
            />
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </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="lang/stopwords_en.txt"
            />
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
</fieldType>
4

1 に答える 1

5

インデックス アナライザーとクエリ アナライザーの両方で、 preserveOriginal="1" パラメーターを WordDelimiterFilterFactory に追加します。現在、generateWordParts は Wal-Mart の Wal と Mart を残します。preserveOriginal は、元の用語 Wal-Mart を検索対象に追加します。

于 2015-10-02T14:19:50.290 に答える