过滤网站搜索结果

本页介绍了如何使用网站数据过滤搜索应用的搜索查询。

准备工作

请确保您已创建应用和数据存储区,并已将网站数据提取到数据存储区。如需了解详情,请参阅创建搜索应用

过滤条件表达式简介

使用过滤条件表达式构建网站搜索过滤条件。过滤条件的构建方式因您是否启用了高级网站索引而异。请根据您是使用基本网站搜索还是高级网站索引编制,参阅以下某一部分:

基本网站搜索的过滤表达式

本部分介绍了在基本网站搜索(高级网站索引编制功能处于关闭状态)中使用过滤表达式的行为。

基本网站搜索的语法

以下扩展的 Backus-Naur 形式总结了在您拥有基本网站搜索功能时用于构建网站搜索过滤条件的过滤器表达式语法。系统会严格强制执行过滤条件中英文冒号后面的英文双引号。

    # 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(字符串)为查询应搜索的网页指定网址模式。

基本网站搜索示例

以下是一些基本网站搜索的过滤条件示例:

  • {"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(字符串):查询应搜索的网页的网址格式。
  • meta 标记名称和 PageMap 属性名称:网页中的结构化数据,可添加到数据存储区的架构中,以便对相关字段进行搜索、检索和编入索引。如需了解详情,请参阅使用结构化数据进行高级网站编入索引

高级网站索引编制功能的语法

以下扩展的 Backus-Naur 形式总结了在启用高级网站编入索引后用于构建网站搜索过滤条件的过滤条件表达式语法。系统会严格强制执行过滤条件中英文冒号后面的英文双引号。

过滤 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/*\""}

    过滤出与第一个或第二个网址模式匹配的任何网域中的文档。例如 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 且值为 networkingcompute 的 PageMap 属性的文档。

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

    用于过滤不包含 meta 标记或值为 storage 的 PageMap 属性名称 product 的文档。

如需详细了解用于编制索引的 meta 标记名称和 PageMap 属性名称,请参阅 meta 标记的使用场景示例PageMap 的使用场景示例

如需过滤网站搜索结果,请按以下步骤操作:

  1. 找到您的应用 ID。如果您已经有应用 ID,请跳至下一步。

    1. 在 Google Cloud 控制台中,前往 Agent Builder 页面。

      前往“应用”

    2. 应用页面上,找到应用的名称,然后从 ID 列中获取应用的 ID。

  2. 如需过滤网站搜索结果,请将 filter 字段与 engines.servingConfigs.search 方法搭配使用。

    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"
    }'