过滤网站搜索结果

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

准备工作

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

关于过滤表达式

使用过滤表达式来构建网站搜索过滤条件。过滤条件的构建方式因您是否已开启高级网站索引编制而异。请参阅以下部分之一,具体取决于您是使用基本网站搜索还是高级网站索引编制:

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

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

基本网站搜索的语法

以下 扩展巴科斯范式 总结了在您使用基本网站搜索时构建网站搜索过滤条件的过滤表达式语法。过滤条件中冒号后的双引号是强制性的。

    # 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(字符串)根据许可过滤搜索结果。如需查看支持的 值,请参阅查询参数 (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 属性名称:网页中的结构化数据,可以添加到数据存储区的架构中,使字段可搜索、可检索和可编入索引。如需了解详情,请参阅 使用结构化数据进行高级网站索引编制

高级网站索引编制的语法

以下 扩展巴科斯范式 总结了在您使用高级网站索引编制时构建网站搜索过滤条件的过滤表达式语法。过滤条件中冒号后的双引号是强制性的。

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

    过滤包含名为 productmeta 标记或 PageMap 属性的文档,其值为 networkingcompute

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

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

  • {"filter": "dateModified>= \"2025-07-31T00:00:00Z\")"}

    过滤上次修改日期为 2025 年 7 月 31 日的文档。 格式必须符合文档架构中的格式。如需了解更多 信息,请参阅 DATETIME

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

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

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

    1. 在 Google Cloud 控制台中,前往 AI Applications 页面。

      前往应用

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

    替换以下内容: