过滤网站搜索

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

准备工作

确保您已创建应用和数据存储区,并且已提取网站数据 写入数据存储区有关详情,请参阅创建搜索 app

过滤表达式简介

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

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

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

基本网站搜索的语法

以下扩展的 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/*\""}

    针对任何网域中的文档过滤,该过滤条件适用于与第 1 项或第 2 项相符的任何网域中的文档 网址格式。例如,https://altostrat.com/subdomain/pages/title_pagehttps://cymbalgroup.com/subdomain/pages/title_page,或者 https://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"
    }'
    
    • PROJECT_ID:您的项目的 ID。
    • APP_ID:应用的 ID。
    • QUERY:要搜索的查询文本。
    • FILTER:一个文本字段,用于使用过滤条件表达式过滤搜索结果。默认值为空字符串。

      如需了解如何为基本网站搜索构建过滤条件,请参阅使用基本网站搜索的过滤表达式

      如需了解如何为高级网站编入索引构建过滤条件,请参阅使用高级网站编入索引的过滤表达式