搜索查询语言

搜索查询语言是用于在 Google 问题跟踪器中执行问题搜索的语法。您可以在搜索栏中输入的搜索查询中使用该语言。您还可以使用搜索构建器以图形方式选择条件,然后该条件会在搜索构建器关闭时转换为查询语言。

查询语言允许您按以下条件进行搜索:

  • 关键字
  • 字段/值对

您执行的搜索可以包含多个条件,包括关键字和字段/值对的组合。通过查询语言语法,您可以使用逻辑运算符、圆括号和引号来指定考虑条件的关系和顺序。

关键字搜索次数

关键字是文本字符串,可用于在问题中的某些字段中进行搜索。这些字段是:

  • 标题
  • 注释
  • 附件名称
  • 包含用户的字段(例如分配对象抄送
  • 包含内部 ID 编号的字段(例如,指定包含问题的组件或热列表的字段)
  • 包含版本号的字段
  • 自定义字段

例如,字符串 configuration properties 就是关键字搜索条件的一个示例。在搜索中输入此条件时,问题跟踪器会全局搜索所有组件中的问题,并返回在上述字段中同时包含这两个关键字的问题(具体取决于您的访问控制权限)。关键字可以位于不同的字段中,也可以位于相同的字段中。

问题跟踪器会将用于分隔搜索条件的空格字符视为隐式 AND 运算符。您可以使用引号 (") 指定多字词字符串被视为单个关键字。问题跟踪器中的所有搜索都不区分大小写,无论您是否使用引号。

字段/值对搜索

您还可以以字段/值对的形式指定搜索条件。基本语法为 [field]:[value]。对于文本字段,此语法与指定字段包含相应值的问题匹配。对于其他类型的字段,它与字段值等效的问题匹配。

例如,搜索 title:latency 会匹配 Title 字段中包含 latency 一词的问题。搜索 priority:p0 可找出优先级为 p0 的问题。

请注意,对于时间和计数字段,除了冒号字符之外,您还可以使用其他关系符号。请参阅下面的关系运算符

使用“any”和“none”的特殊值搜索

可以使用特殊值 anynone 查询可选字段。any 与任何非 null 值匹配。none 与 null 值匹配。如需查看搜索查询语言支持的所有字段标签的列表,请参阅搜索查询参考

逻辑运算符

逻辑运算符可用于指定多个条件并指示它们之间的关系。如上所述,引号之外的空格字符充当隐式 AND 运算符。问题跟踪器支持以下其他显式逻辑运算符:

运营商 替代符号 说明 示例
以及 {whitespace} 如果问题同时包含这两个条件,则匹配 star:true AND componentid:46046
OR | 符合任一条件的问题 type:(Bug|feature_request)
NOT - 如果问题不包含条件,则匹配 -assignee:jim
"..." 如果问题中包含引用的词组(引号中的字词以相同顺序显示),则匹配 comment:"We have a problem"
( ) 将值或搜索条件归为一组 status:open AND (priority:(p0|p1) OR severity:(s0|s1))

请注意以下几点:

  • ANDORNOT 的字母必须全部大写。

  • 无论 NOT 运算符位于字段名称之前还是字段值之前,其含义相同。这意味着 -assignee:jimassignee:-jim 等效。

  • 主要使用括号来明确地将搜索查询中的字词分组。默认情况下,问题跟踪器会将 NOT 仅与其后面紧跟的字词相关联,而将 OR 与包含该字词的两个字词分在一组。例如,搜索查询 title:(a OR b NOT c AND d) 等同于 title:((a OR b) AND (NOT c) AND d)

短线

短划线字符 (-) 的含义因搜索查询中的上下文而异:

  • 问题跟踪器会将搜索中某个字词前面的短划线视为 NOT 运算符。例如,如果搜索条件 -assignee:noneassignee:-none 则会返回所有具有分配对象的问题。

  • 问题跟踪器会将短划线字符连接的字符串视为用引号引起来。例如,搜索条件 state-of-the-art 等同于 "state of the art"

  • 问题跟踪器会将问题字段中带连字符的字词视为由空格分隔的独立字词。这意味着,如果问题的标题中包含 state-of-the-art 一词,而您执行搜索查询 title:(of art state the)title:("state of the art"),系统就会在搜索结果中返回该问题。

关系运算符

字段/值搜索条件的基本语法是 [field]:[value],其中英文冒号字符 (:) 指定给定字段必须等于或包含指定值,才能在搜索结果中返回问题。

包含时间值(createdmodifiedresolvedverified 和某些自定义字段)或计数值(duplicatecountvotecountcommentcountcccount)的字段支持以下额外的关系运算符:

符号 说明
< 如果问题的值小于/早于搜索值,则匹配相应问题。
<= 如果问题的值小于/之前或等于您的搜索值,则匹配相应问题。
> 如果问题的值大于/晚于搜索值,则匹配相应问题。
>= 如果问题的值大于/晚于您的搜索值,则匹配相应问题。

时间搜索

搜索查询语言为匹配包含时间值的字段提供了一种特殊语法。这样一来,问题跟踪器就可以根据需要在一定时间范围或相对时间内进行搜索。

绝对时间格式

时间的指定格式如下:

[yyyy]-[MM]-[dd]T[HH]:[mm]:[ss].

在此格式中,[yyyy] 表示 4 位数的年份,[MM] 表示 2 位数的月份,[dd] 表示 2 位数的日期,[HH] 表示 24 小时制的 2 位数小时,[mm] 表示分钟,[ss] 表示秒。所有时间均采用世界协调时间 (UTC)。

在搜索特定时间之前、之前或之后创建的问题时,您可以提供所需的具体程度。例如,您可以指定 created:2014-06 来查找 2014 年 6 月任何时间创建的问题。如需更具体的信息,您可以搜索 created:2014-06-03T04 来查找 2014 年 6 月 3 日第 4 个小时(世界协调时间 (UTC) 凌晨 4 点到 5 点之间)创建的问题。

时间范围

您可以使用两个英文句点字符 (..) 在字段/值搜索条件中指定时间范围。语法为 [field]:[start time]..[end time]。开始时间和结束时间可以具有您需要的任何程度。例如,verified:2013..2015 会返回在 2013、2014 或 2015 年验证的所有问题。

相对时间格式

您还可以根据今天之前的日期指定时间。为此,请使用 [days]d 格式,其中 [days] 是要在搜索结果中包含的过去天数。例如,您可以使用 modified:5d 查找过去五天内修改的问题。

使用相对时间格式时,运算符必须是冒号字符 (:),例如 created:5d。如果您要查找不在该范围内的问题,可以使用 NOT- 运算符。

例如,-verified:10d 会返回过去 10 天内未经验证的问题。如果您想查找过去 10 天内已通过验证但未经验证的问题,可以使用 (-verified:10d) AND status:verified

使用日算术的“今天”搜索

您可以在时间搜索中使用 today 令牌来替代当前日期。它支持使用日期算术,如 today+10today-2today 令牌还可与 today-2..today+3 等时间范围搭配使用。在保存的搜索中使用 today 令牌有助于使查询可重复使用。

示例:

  • created:today
  • modified<=today-10
  • nearestslo:today+10
  • resolved:2024-02-29..today+2
  • customfield1002:today..today+5

注意:如绝对时间格式中所述,问题跟踪器中的时间搜索采用世界协调时间 (UTC)。这同样适用于使用 today 的搜索。