メインコンテンツまでスキップ

フルテキスト検索およびクエリアクセラレーションサポート

全文検索演算子

MATCH_ANY

  • フィールド内の指定されたキーワードのいずれかを含む行にマッチします。
SELECT * FROM table_name WHERE content MATCH_ANY 'keyword1 keyword2';

MATCH_ALL

  • フィールド内に指定されたすべてのキーワードを含む行にマッチします。
SELECT * FROM table_name WHERE content MATCH_ALL 'keyword1 keyword2';

MATCH_PHRASE

  • 用語が隣接して順序通りに現れるフレーズマッチ。
  • 高速化のためにインデックスプロパティ "support_phrase" = "true" が必要。
SELECT * FROM table_name WHERE content MATCH_PHRASE 'keyword1 keyword2';

MATCH_PHRASE with slop

  • 用語間に最大距離までのギャップを許可する緩い句マッチング。
-- Allow up to 3 terms between keyword1 and keyword2
SELECT * FROM table_name WHERE content MATCH_PHRASE 'keyword1 keyword2 ~3';

厳密な順序でのMATCH_PHRASE

  • +を使用してslopと厳密な順序を組み合わせ、用語の順序を強制します。
SELECT * FROM table_name WHERE content MATCH_PHRASE 'keyword1 keyword2 ~3+';

MATCH_PHRASE_PREFIX

  • 最後の語句でプレフィックスマッチングを使用するフレーズマッチ。
  • 単一の語句の場合、その語句のプレフィックスマッチングに縮退する。
-- Last term as prefix
SELECT * FROM table_name WHERE content MATCH_PHRASE_PREFIX 'keyword1 key';

-- Single-term prefix match
SELECT * FROM table_name WHERE content MATCH_PHRASE_PREFIX 'keyword1';

MATCH_REGEXP

  • フィールドのトークン化された用語に対する正規表現マッチ。
SELECT * FROM table_name WHERE content MATCH_REGEXP '^key_word.*';

MATCH_PHRASE_EDGE

  • 最初の語を後方一致、中間の語を完全一致、最後の語を前方一致として扱います。語は隣接している必要があります。
SELECT * FROM table_name WHERE content MATCH_PHRASE_EDGE 'search engine optim';

転置インデックスクエリ高速化

サポートされている演算子と関数

  • 等価と集合: =, !=, IN, NOT IN
  • 範囲: >, >=, <, <=, BETWEEN
  • Nullチェック: IS NULL, IS NOT NULL
  • 配列: array_contains, array_overlaps
-- Examples
SELECT * FROM t WHERE price >= 100 AND price < 200; -- range
SELECT * FROM t WHERE tags IN ('a','b','c'); -- set
SELECT * FROM t WHERE array_contains(attributes, 'color'); -- arrays