検索語内で 1文字または複数文字のワイルドカードを利用することができます。? は 1文字のワイルドカードとして指定でき、*は複数文字のワイルドカードとして指定することができます。ワイルドカードを利用できる対象は単語になります。文に対するワイルドカード検索はできません。
利用方法
1 文字のワイルドカードを利用する場合は以下のように ? を利用します。
上記の場合は、text や test など、? の位置の任意の 1 文字に一致します。
複数文字のワイルドカードを利用する場合は以下のように * を利用します。
上記の場合は、test、tests や tester など、* の位置の 0 文字以上の任意の文字列に一致します。また、
のように検索語の途中で利用することもできます。さらに、
のように検索語の先頭でワイルドカードを利用することもできます。
フィールドを指定してワイルドカード検索を行うこともできます。次の例では、title フィールドに te で始まり t で終わる単語を含むドキュメントを検索します。
フィールドを指定しない場合は、title および content フィールドを対象に検索します。
利用条件
ワイルドカード検索を利用する際は以下の点に注意してください。
ワイルドカードはインデックスに登録された文字列 (トークン) を対象に一致します。検索語は再解析されないため、bi-gram などでインデックスを作成した場合、日本語は意味を持たない固定長の文字列として扱われ、日本語でのワイルドカードは期待する動作になりません。日本語でワイルドカードを利用する場合は、形態素解析を利用しているフィールドで利用してください。
ワイルドカードのパターンは大文字と小文字を区別します。インデックスに登録される単語は通常小文字に変換されるため、パターンには小文字を使用してください。たとえば
Test*は、小文字化されて登録されたtestには一致しません。先頭にワイルドカードを付けた検索 (たとえば
*test) は、インデックス内のすべての単語を走査するため、処理に時間がかかることがあります。