ワイルドカード検索

検索語内で 1文字または複数文字のワイルドカードを利用することができます。? は 1文字のワイルドカードとして指定でき、*は複数文字のワイルドカードとして指定することができます。ワイルドカードを利用できる対象は単語になります。文に対するワイルドカード検索はできません。

利用方法

1 文字のワイルドカードを利用する場合は以下のように ? を利用します。

te?t

上記の場合は、text や test など、? の位置の任意の 1 文字に一致します。

複数文字のワイルドカードを利用する場合は以下のように * を利用します。

test*

上記の場合は、test、tests や tester など、* の位置の 0 文字以上の任意の文字列に一致します。また、

te*t

のように検索語の途中で利用することもできます。さらに、

*test

のように検索語の先頭でワイルドカードを利用することもできます。

フィールドを指定してワイルドカード検索を行うこともできます。次の例では、title フィールドに te で始まり t で終わる単語を含むドキュメントを検索します。

title:te*t

フィールドを指定しない場合は、title および content フィールドを対象に検索します。

利用条件

ワイルドカード検索を利用する際は以下の点に注意してください。

  • ワイルドカードはインデックスに登録された文字列 (トークン) を対象に一致します。検索語は再解析されないため、bi-gram などでインデックスを作成した場合、日本語は意味を持たない固定長の文字列として扱われ、日本語でのワイルドカードは期待する動作になりません。日本語でワイルドカードを利用する場合は、形態素解析を利用しているフィールドで利用してください。

  • ワイルドカードのパターンは大文字と小文字を区別します。インデックスに登録される単語は通常小文字に変換されるため、パターンには小文字を使用してください。たとえば Test* は、小文字化されて登録された test には一致しません。

  • 先頭にワイルドカードを付けた検索 (たとえば *test) は、インデックス内のすべての単語を走査するため、処理に時間がかかることがあります。