2011-10-23 17 views
0

プレフィックスクエリ 'æb*'と 'aeb*'を使用してドキュメントを検索できるようにフィールドのインデックスを作成しようとしています。何が起こるか:それは後者を見つけるが、前者は見つけない。などISOLatin1Accent文字を使用したSolrプレフィックスクエリ

A、I、同じ問題これは私のスキーマです:

<fieldtype name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer> 
    <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 

    </analyzer> 
</fieldtype> 

あなたは、私は、インデックスとクエリのために同じアナライザーを使用している見ることができるように。だから私が正しく理解すると、クエリ 'æb*'は 'aeb*'に正規化する必要があります。 '*'のシンボルは何とか干渉していますか?希望の結果を得るためにスキーマを設定するにはどうすればよいですか?

私はSolr 1.4.1を使用しています。

答えて

1

接頭辞、ワイルドカードおよびファジー検索では、検索語に対してテキスト分析は実行されません。
したがって、検索時にMappingCharFilterFactoryが指定されていても、検索語は分析されません。
そして、インデックス時に分析が適用されるので、upper case matchesでさえもaeb*(アクセント・フィルターと小文字)だけが一致します。

独自のクエリパーサーを定義し、プレフィックスクエリの検索条件を分析することができます。
それ以外の場合は、アクセント付きおよびアクセントなしのフィールドを定義し、両方で検索を行います。 しかし、検索語を小文字にする必要があります。

+0

ありがとうございました。私は索引付けをする前にそれを正規化するか、正規化を完全に落とすかのいずれかになります。 – Morrowless

関連する問題