【Shopify.dev和訳】API usage/Search syntax
この記事について
この記事は、API usage/Search syntaxの記事を和訳したものです。
記事内で使用する画像は、公式ドキュメント内の画像を引用して使用させていただいております。
Shopify アプリのご紹介
Shopify アプリである、「商品ページ発売予告アプリ | リテリア Coming Soon」は、商品ページを買えない状態のまま、発売日時の予告をすることができるアプリです。Shopify で Coming Soon 機能を実現することができます。
Shopify アプリである、「らくらく日本語フォント設定|リテリア Font Picker」は、ノーコードで日本語フォントを使用できるアプリです。日本語フォントを導入することでブランドを演出することができます。
ShopifyAPI 検索構文
このページでは、テキストフィールドを検索するための構文について説明します。
検索機能のインターフェースとして、Shopify 全体で同じ検索クエリ構文が使用されています。これには、storefront,admin, mobile apps, customer group queries, Admin API, Storefront APIが含まれます。API の場合、クエリできる特定のリソースはリファレンスドキュメントで定義されています。
検索クエリ文法の概要
文字列クエリは、用語、連結語、修飾子、および比較対象で構成されるテキスト検索です。ここで定義されている検索文法規則は、検索クエリ構文で定義されているように、より大きな構造に組み込むことができます。
検索文法はEBNFと同様に表現され、次のようにいくつかのベースライン終端記号を使用します。
アイテム | 説明 |
---|---|
whitespace |
スペース、タブ、または改行文字の任意のシーケンス。 |
name |
非空白、非特殊文字の任意のシーケンス。詳細については、特殊文字を参照してください。 |
value |
任意の名前、または引用符で囲まれた文字列(一重引用符または二重引用符の両方が許可されます)。 |
クエリ
文法のルートはクエリです。
Query = Term { [ whitespace Connective ] whitespace Term }
クエリは、空白で区切られ、任意の単一の連結語で区切られた 1 つ以上の用語です。クエリには、選択的に先頭と末尾に空白を入れることができます。
query=John Smith
連結語
Connective = "AND" | "OR"
接続詞が 2 つの用語の間に指定されていない場合、AND
が暗示的に指定されます。
query=state:enabled OR state:disabled
条項
Term = [ Modifier ] ( "(" Query ")" | [ name Comparator ] value )
用語は、任意の修飾子と、それに続くサブクエリ(括弧で囲まれた)または任意の名前とコンパレータを含む値で構成されます。
query=-first_name:Bob AND orders_count:>3 orders_count:<=4
修飾子
Modifier = "-" | "NOT" whitespace
修飾子は「-」(この場合は空白を続けてはいけません)または「NOT」(この場合は空白を続けてください)にすることができます。どちらも同じ意味です。
query=-first_name:Bob
コンパレータ
Comparator = ":" | ":<" | ":>" | ":<=" | ":>="
コンパレータの現在のリストは次のとおりです。
-
:
同等性を持つ -
:<
より少ない -
:>
より大きい -
:<=
以下である -
:>=
以上である
*同等性は、フィールドのインデックス付け方法によって異なります。数値フィールドの場合、:
は等しいことを表します。トークン化されたフィールドの場合、用語がフィールドのどこかにあると、同等性が存在します。トークン化されていないフィールドの場合、検索クエリ文字列は検索されたフィールドと正確に一致する必要があります。
検索クエリの構文
Shopify の検索クエリ構文は、定義された文法に基づいており、次の検索動作を可能にします。
用語検索
用語検索では、大文字と小文字を区別しない検索がドキュメントの任意のフィールドに表示されます。
query=Bob Norman
これにより、「bob」と「norman」の両方で大文字と小文字を区別しない検索が行われます。
フィールド検索
フィールド検索は、特定のフィールドの用語に適用されます。
query=first_name:Bob age:27
これにより、「first_name」フィールドで「Bob」が検索され、「age」フィールドで「27」が検索されます。値は空白なしでフィールドの直後に続く必要があります:first_name: Bob
は実際には「first_name」および「Bob」という用語を検索します。
範囲検索
範囲検索は、検索する値の範囲を指定します。
query=orders_count:>16 orders_count:<=30
ここで文書にマッチするorders_count
フィールドは 16 より大きく 30 以下です。サポートされている演算子は>
、>=
、<
、<=
です。
等しいとするには、orders_count:=16
ではなくorders_count:16
とします。前者は実際にはorders_count
フィールドで「=16
」を検索します。
Not クエリ
このクエリは、NOT 演算子を含むドキュメントを除外します。
query=-bob
query=NOT bob
これらのクエリはどちらも、「bob」という用語を含むドキュメントを返しません。
Not クエリを実行するには、「NOT」演算子を大文字にする必要があり、次のスペースで区切られた用語またはクエリにのみ適用されます。マイナス記号は、フィールド、値、またはサブクエリの前に置く必要があります。-field:value -value -(subquery)
boolean 演算子
boolean 演算子を使用すると、論理演算子を使用して用語を組み合わせることができます。
query=bob OR norman AND Shopify
これは、"Shopify "という用語を持たなければならず、"bob "または "norman "という用語の少なくとも 1 つを持つべきである文書を検索します。
query=bob OR norman Shopify
OR は AND よりも演算子の優先順位が高いため、このクエリは上記のクエリと同等です。さらに、用語またはクエリ間のデフォルトのブール演算子は AND であるため、明示的な AND 演算子は必要ありません。
グループ化
Shopify は、括弧を使用して句をグループ化し、サブクエリを形成することをサポートしています。
query=state:disabled AND ("sale shopper" OR VIP)
これは、タグsale shopper
またはVIP
を使用して障害のある顧客を検索します。
フレーズクエリ
フレーズは、二重引用符で囲まれた単語のグループです。
query=first_name:"Bob Norman"
これにより、「first_name」フィールドで「bob」の直後に「norman」が続く用語が検索されます。フレーズクエリは、「Bob Norman」など、フィールドクエリの外部で使用できます。
プレフィックスクエリ
プレフィックスクエリは、指定された文字セットで始まる用語を含むドキュメントに一致します。
query=norm*
これにより、接頭辞「norm」で始まるすべての用語が検索されます。例、「norman」。
特殊文字
Shopify は、バックスラッシュエスケープを使用して特殊文字をエスケープする機能をサポートしています。特殊文字の現在のリストは次のとおりです。
: \ ( )
名前は-
,'
,"
の文字を含むことができますが、それらで始めることはできません。名前には、バックスラッシュエスケープを使用してエスケープされた文字を含めることができます。
Exists クエリ
Exists クエリは、指定されたフィールドに NULL 以外の値を持つドキュメントと一致します。
query=published_at:*
このクエリを NotQuery と組み合わせて、値が欠落しているフィールドを見つけることができます。例、-published_at:*
Shopify アプリのご紹介
Shopify アプリである、「商品ページ発売予告アプリ | リテリア Coming Soon」は、商品ページを買えない状態のまま、発売日時の予告をすることができるアプリです。Shopify で Coming Soon 機能を実現することができます。
Shopify アプリである、「らくらく日本語フォント設定|リテリア Font Picker」は、ノーコードで日本語フォントを使用できるアプリです。日本語フォントを導入することでブランドを演出することができます。
Discussion