Tablestore の検索インデックスは、さまざまなシナリオであいまい検索要件を満たすために、ワイルドカード検索、接頭辞検索、および接尾辞検索機能をサポートしています。ビジネス要件に基づいて適切なクエリ方法を選択できます。このトピックでは、検索インデックスでサポートされているあいまい検索の種類について説明します。
背景情報
ビジネス開発中に、あいまい検索機能を使用して、名前、電話番号、注文番号などのデータをクエリすることがよくあります。リレーショナルデータベースでは、LIKE 演算子を使用してあいまい検索を実行できます。Tablestore の検索インデックスもあいまい検索機能をサポートしています。
クエリの種類
Tablestore の検索インデックスは、次の種類のあいまい検索機能をサポートしています。
ワイルドカード検索: この機能は、従来のリレーショナルデータベースの LIKE 演算子に似ています。アスタリスク (*) と疑問符 (?) を含む文字列を指定して、ワイルドカード検索を実行できます。アスタリスク (*) は任意の長さの文字列と一致します。疑問符 (?) は単一の文字と一致します。指定する文字列は、アスタリスク (*) または疑問符 (?) で始めることができます。たとえば、
table*e
文字列を検索すると、tablestore
が一致します。接頭辞検索: 接頭辞を指定して、指定した接頭辞と一致するデータをクエリできます。たとえば、注文番号が
H00
で始まる注文をクエリできます。接尾辞検索: 接尾辞を指定して、指定した接尾辞と一致するデータをクエリできます。たとえば、
1234
で終わる携帯電話番号をクエリできます。
あいまい検索機能は、次のフィールドタイプに基づいてさまざまな方法で実装できます。
キーワード: キーワードタイプのフィールドで文字列ベースのあいまい検索を実行できます。クエリ中に、文字列は 1 つずつ照合されます。データ量が増加するにつれて、クエリのパフォーマンスは低下します。キーワードタイプは、ワイルドカード検索と接頭辞検索をサポートしています。キーワードタイプは大文字と小文字を区別し、最大フィールド長は 4 KB です。
FuzzyKeyword: FuzzyKeyword タイプのフィールドで最適化されたあいまい検索を実行できます。キーワードタイプと比較して、FuzzyKeyword タイプはより効率的な方法でデータをクエリし、データ量の影響を受けずに、より安定したクエリパフォーマンスを提供できます。FuzzyKeyword タイプは、ワイルドカード検索、接頭辞検索、および接尾辞検索をサポートしています。FuzzyKeyword タイプは大文字と小文字を区別し、最大フィールド長は 2 KB です。
テキスト: FuzzyAnalyzer などのトークン化メソッドを使用して、テキストタイプのフィールドであいまい検索をより柔軟かつ制御可能な方法で実行できます。テキストタイプの大文字と小文字の区別を指定できます。テキストタイプは、
*ALI*
形式の文字列を検索するトークン化ベースのワイルドカード検索をサポートしています。FuzzyAnalyzer を使用する場合、テキストタイプの最大フィールド長は 1 KB です。