ウェブサイト検索をフィルタする

このページでは、ウェブサイトのデータを使用して検索アプリの検索クエリをフィルタする方法について説明します。

始める前に

アプリとデータストアを作成し、ウェブサイトのデータをデータストアに取り込んだことを確認します。詳細については、検索アプリを作成するをご覧ください。

フィルタ式について

フィルタ式を使用して、ウェブサイトの検索フィルタを作成します。フィルタの作成方法は、ウェブサイトの高度なインデックス登録を有効にしているかどうかによって異なります。基本的なウェブサイト検索とウェブサイトの高度なインデックス登録のどちらをご利用かによって、次のいずれかのセクションをご覧ください。

基本的なウェブサイト検索のフィルタ式

このセクションでは、基本的なウェブサイト検索(ウェブサイトの高度なインデックス登録が無効)でのフィルタ式の動作について説明します。

基本的なウェブサイト検索の構文

次のExtended Backus-Naur form は、基本的なウェブサイト検索の場合のウェブサイト検索の定義に使用できるフィルタ式の構文をまとめたものです。フィルタのコロンの後の二重引用符は厳密に適用されます。

    # A single expression or multiple expressions that are joined by "AND".
  filter = expression, { "AND", expression };
  expression =
    # A simple expression applying to a text url string.
    | filter_key, ":", \"text_value\"
  filter_key = (cr | highRange | lowRange | fileType | lr | rights | siteSearch);
  text_value = string value to filter on;

基本的なウェブサイト検索で使用できるフィールド

基本的なウェブサイト検索を使用している場合に、ウェブサイト検索のフィルタリングに使用できるフィールドは次のとおりです。

  • cr(文字列)検索結果を特定の国のドキュメントに制限します。 サポートされている値の一覧については、国コレクションの値をご覧ください。

  • highRange(文字列)検索範囲の上限を指定します。ドキュメントに数値が含まれている場合、そのドキュメントがレスポンスに含まれるには、その数値が highRange の値以下である必要があります。highRangelowRange の両方を指定して、これらのパラメータの範囲内で検索クエリを作成します。

  • lowRange(文字列)検索範囲の下限を指定します。ドキュメントに数値が含まれている場合、そのドキュメントがレスポンスに含まれるには、数値が lowRange の値以上である必要があります。lowRangehighRange の両方を指定して、これらのパラメータの範囲内で検索クエリを作成します。

  • fileType(文字列)検索結果を指定した拡張子のドキュメントに制限します。サポートされているファイル形式の一覧については、Google でインデックス登録できるファイル形式をご覧ください。

  • lr(文字列)検索結果を指定した言語で作成されたドキュメントに制限します。サポートされている言語の一覧については、クエリ パラメータ(lr)をご覧ください。

  • rights(文字列)ライセンスに基づいて検索結果をフィルタします。サポートされている値については、クエリ パラメータ(権限)をご覧ください。

  • siteSearch(文字列)クエリで検索するウェブページの URL パターンを指定します。

基本的なウェブサイト検索の例

基本的なウェブサイト検索で使用できるフィルタの例を以下に示します。

  • {"filter": "cr:\"countryUS\" AND siteSearch:\"https://example.com/example_domain\""}

    (1)米国からのドキュメント、(2)ドメイン https://example.com/example_domain のドキュメントをフィルタします。

  • {"filter": "fileType:\".pdf\" AND lr:\"lang_en\""}

    (1)PDF ファイルで、(2)英語のドキュメントをフィルタします。

  • {"filter": "rights:\"cc_publicdomain\""}

    パブリック ドメインにあるドキュメントをフィルタします。

ウェブサイトの高度なインデックス登録でフィルタ式を使用する

このセクションでは、ウェブサイトの高度なインデックス登録が有効になっている場合のフィルタ式の動作について説明します。

ウェブサイトの高度なインデックス登録で使用できるフィールド

ウェブサイトの高度なインデックス登録を使用している場合は、次のフィールドを使用してウェブサイト検索をフィルタできます。

ウェブサイトの高度なインデックス登録の構文

次の Extended Backus-Naur form は、ウェブサイトの高度なインデックス登録の場合のウェブサイト検索の定義に使用できるフィルタ式の構文をまとめたものです。フィルタのコロンの後の二重引用符は厳密に適用されます。

siteSearch をフィルタリングする場合の EBNF 構文は次のとおりです。

    # A single expression or multiple expressions that are joined by "OR".
  filter = expression, { "OR", expression };
    # Expressions can be prefixed with "-" or "NOT" to express a negation.
  expression = [ "-" | "NOT " ],
    # A simple expression applying to a text url string.
    | filter_key, ":", \"url_string\"
  filter_key = siteSearch;
  url_string = double quoted string representing a URL;

meta タグ名と PageMap 属性名でフィルタリングする場合、EBNF 構文は次のようになります。

    # A single expression or multiple expressions that are joined by "OR".
  filter = expression, { "OR", expression };
    # Expressions can be prefixed with "-" or "NOT" to express a negation.
  expression = [ "-" | "NOT " ],
   # Function "ANY" returns true if the field exactly matches any of the literals.
    | text_field, ":", "ANY", "(", literal, { ",", literal }, ")"
  literal = double quoted string;
  # text_field corresponds to the meta tag or PageMap Attribute name, for example, category
  text_field = text field;

ウェブサイトの高度なインデックス登録の例

siteSearch を使用したウェブサイトの高度なインデックス登録で使用できるフィルタの例を以下に示します。

  • {"filter": "siteSearch:\"https://example.com/example_domain\""}

    ドメイン https://example.com/example_domain にあるドキュメントをフィルタします。例: https://example.com/example_domain/index.html

  • {"filter": "siteSearch:\"https://example.com/subdomains/*\""}

    https://example.com/subdomains/* に一致するドメインにあるドキュメントをフィルタします。例: https://example.com/subdomains/example_subdomain_page

  • {"filter": "siteSearch:\"https://altostrat.com/subdomain/pages/*\" OR siteSearch:\"http://cymbalgroup.com/pages/*\""}

    1 つ目の URL パターンまたは 2 つ目の URL パターンに一致するドメインにあるドキュメントをフィルタします。たとえば、https://altostrat.com/subdomain/pages/title_pagehttps://cymbalgroup.com/subdomain/pages/title_pagehttps://altostrat.com/subdomain/pages/INFO です。

meta または PageMap 属性名のフィルタリングの例を以下に示します。

  • {"filter": "product: ANY(\"networking\",\"compute\")"}

    meta タグまたは product という名前の PageMap 属性を含み、その値が networking または compute のいずれかであるドキュメントをフィルタします。

  • {"filter": "NOT product: ANY(\"storage\")"}

    meta タグまたは PageMap 属性名 product(値が storage)を含まないドキュメントをフィルタします。

インデックス登録に使用される meta タグ名と PageMap 属性名の詳細については、meta タグのユースケースの例PageMaps のユースケースの例をご覧ください。

ウェブサイト検索をフィルタするには、次の操作を行います。

  1. アプリ ID を確認します。アプリ ID がすでにある場合は、次のステップに進みます。

    1. Google Cloud コンソールで、[AI Applications] ページに移動します。

      [アプリ] に移動

    2. [アプリ] ページで、アプリの名前を見つけ、[ID] 列からアプリの ID を取得します。

  2. ウェブサイト検索をフィルタするには、engines.servingConfigs.search メソッドで filter フィールドを使用します。

    curl -X POST -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
    -d '{
     "servingConfig": "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search",
    "query": "QUERY",
    "filter": "FILTER"
    }'
    

    次のように置き換えます。