2

Solr で予期しない結果が得られました。誰かが助けてくれることを願っています。私の schema.xml には、検索しているフィールド (インデックスとクエリの両方) の splitOnCaseChange="1" があり、デフォルトの検索動作は "OR" です。

「Airline」という単語が索引付けされたフィールドがあります。「航空会社」で検索するとヒットしました。「Airline Alias」を検索すると、一致が得られます (OR であるため、予想どおり)。しかし、「AirlineAlias」で検索しても一致しません。私は、splitOnCaseChange プロパティが用語 AirlineAlias クエリを 2 つの基本単語に分離することを期待していました。ただし、それが発生した場合は、"Airline" に一致するものを見つける必要があります (つまり、"Airline Alias" とまったく同じクエリである必要があります)。

私の理解は正しいですか?もしそうなら、正しい検索結果が得られない理由についてのアイデアはありますか?

以下の schema.xml ファイルから関連するセクションをコピーしました。

助けてくれてありがとう。

<fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
    <analyzer type="index">
            <tokenizer class="solr.WhitespaceTokenizerFactory" />
            <filter class="solr.StopFilterFactory" 
                    ignoreCase="true" 
                    words="lang/stopwords_en.txt" 
                    enablePositionIncrements="true" />
            <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" 
                            enablePositionIncrements="true" />
            <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>

<fields>

<field name="value" type="text_en_splitting" indexed="true" stored="true" multiValued="true" omitNorms="true" />
/fields> 

<solrQueryParser defaultOperator="OR" />
4

1 に答える 1

2

Solr メーリング リストで Jack Krupansky から回答を得たので、今後の検索者のためにここで更新します...

="text_en_splitting" フィールド タイプに autoGeneratePhraseQueries="false" を設定するだけです。現在の設定では、AirlineAlias を "Airline Alias" という引用句として扱いました。

于 2012-08-20T22:38:45.943 に答える