このページでは、ウェブサイトのデータを使用して検索アプリの検索クエリをフィルタする方法について説明します。
始める前に
アプリとデータストアを作成し、ウェブサイトのデータをデータストアに取り込んだことを確認します。詳細については、検索アプリを作成するをご覧ください。
フィルタ式について
フィルタ式を使用して、ウェブサイトの検索フィルタを作成します。フィルタの作成方法は、ウェブサイトの高度なインデックス登録を有効にしているかどうかによって異なります。基本的なウェブサイト検索とウェブサイトの高度なインデックス登録のどちらをご利用かによって、次のいずれかのセクションをご覧ください。
基本的なウェブサイト検索のフィルタ式
このセクションでは、基本的なウェブサイト検索(ウェブサイトの高度なインデックス登録が無効)でのフィルタ式の動作について説明します。
基本的なウェブサイト検索の構文
次の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
の値以下である必要があります。highRange
とlowRange
の両方を指定して、これらのパラメータの範囲内で検索クエリを作成します。lowRange
(文字列)検索範囲の下限を指定します。ドキュメントに数値が含まれている場合、そのドキュメントがレスポンスに含まれるには、数値がlowRange
の値以上である必要があります。lowRange
とhighRange
の両方を指定して、これらのパラメータの範囲内で検索クエリを作成します。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\""}
パブリック ドメインにあるドキュメントをフィルタします。
ウェブサイトの高度なインデックス登録でフィルタ式を使用する
このセクションでは、ウェブサイトの高度なインデックス登録が有効になっている場合のフィルタ式の動作について説明します。
ウェブサイトの高度なインデックス登録で使用できるフィールド
ウェブサイトの高度なインデックス登録を使用している場合は、次のフィールドを使用してウェブサイト検索をフィルタできます。
siteSearch
(文字列): クエリで検索するウェブページの URL パターン。meta
タグ名と PageMap 属性名: データストアのスキーマに追加して、フィールドを検索可能、取得可能、インデックス登録可能にするように追加できる、ウェブページの構造化データ。詳しくは、構造化データを使用してウェブサイトの高度なインデックス登録を行うをご覧ください。
ウェブサイトの高度なインデックス登録の構文
次の 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_page
、https://cymbalgroup.com/subdomain/pages/title_page
、https://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 のユースケースの例をご覧ください。
ウェブサイト検索をフィルタする
ウェブサイト検索をフィルタするには、次の操作を行います。
アプリ ID を確認します。アプリ ID がすでにある場合は、次のステップに進みます。
Google Cloud コンソールで、[AI Applications] ページに移動します。
[アプリ] ページで、アプリの名前を見つけ、[ID] 列からアプリの ID を取得します。
ウェブサイト検索をフィルタするには、
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" }'
次のように置き換えます。
PROJECT_ID
: 実際のプロジェクトの ID。APP_ID
: アプリの ID。QUERY
: 検索するクエリテキスト。FILTER
: フィルタ式を使用して検索結果をフィルタリングするためのテキスト フィールド。デフォルト値は空文字列です。基本的なウェブサイト検索のフィルタの作成については、基本的なウェブサイト検索でフィルタ式を使用するをご覧ください。
ウェブサイトの高度なインデックス登録用のフィルタの作成については、ウェブサイトの高度なインデックス登録用のフィルタ式をご覧ください。