搜索查询语言是您在 Google 问题跟踪器中执行问题搜索时使用的语法。您可以在搜索栏中输入的搜索查询中使用该语言。您还可以使用搜索构建工具以图形方式选择条件,然后在关闭搜索构建工具时将其转换为查询语言。
借助查询语言,您可以按以下条件进行搜索:
- 关键字
- 字段:值对
您执行的搜索可以包含多个条件,包括关键字和字段:值对的组合。借助查询语言语法,您可以使用逻辑运算符、括号和引号来指定条件之间的关系和考虑顺序。
关键字搜索
关键字是指您可用于在问题中的特定字段中进行搜索的文本字符串。这些字段包括:
- 标题
- 评论
- 附件的名称
- 包含用户的字段(例如“负责人”或“抄送”)
- 包含内部 ID 编号的字段(例如,用于指定包含问题的组件或热门列表的字段)
- 包含版本号的字段
- 自定义字段
关键字搜索条件示例为字符串 configuration properties
。当您在搜索中输入此条件时,问题跟踪器会在所有组件中全局搜索问题,并返回字段中同时包含这两个关键字的问题(具体取决于您的访问控制权限)。关键字可以位于不同的字段或相同的字段中。
关键字还会与一些基本同义词匹配,因此搜索 property
可能会额外找到包含 properties
一词的 bug。否则,搜索将仅匹配完整的字词令牌,而不是将查询视为子字符串。
在执行搜索之前,系统会从关键字中移除大多数特殊字符。例如,my-query_text
这样的查询会拆分为令牌 my
和 query_text
,并返回与这两个令牌匹配的 bug。
问题跟踪器会将分隔搜索条件的空格字符视为隐式 AND
运算符。您可以使用引号 ("
) 指定将多字词字符串视为单个关键字。无论您是否使用引号,问题跟踪器中的所有搜索均不区分大小写。
字段:值对搜索
您还可以将搜索条件指定为字段:值对。基本语法为 [field]:[value]
。对于文本字段,此语法会匹配指定字段包含该值的问题。对于其他类型的字段,它会匹配字段值等同的问题。
例如,搜索 title:latency
会匹配 Title 字段中包含 latency
字词的问题。搜索 priority:p0
会找到优先级为 p0
的问题。
系统会将任何无法识别的字段解读为关键字搜索。
请注意,对于时间和计数字段,除了冒号字符之外,您还可以使用其他关系符号。请参阅关系运算符。
使用“any”和“none”进行特殊值搜索
可使用特殊值 any
和 none
查询可选字段。any
与任何非 null 值匹配。none
会匹配 null 值。如需查看搜索查询语言中所有受支持的字段标签的列表,请参阅搜索查询参考文档。
逻辑运算符
借助逻辑运算符,您可以指定多个条件并指明它们之间的关系。引号外的空格字符充当隐式 AND
运算符。问题跟踪器支持以下其他显式逻辑运算符:
运算符 | 备用符号 | 说明 | 示例 |
---|---|---|---|
AND | {whitespace} | 如果问题同时包含这两个条件,则匹配 | star:true AND componentid:46046
|
或 | | | 如果问题包含任一条件,则匹配 | type:(Bug|feature_request)
|
而非 | - | 如果问题不包含相应条件,则匹配 | -assignee:jim
|
“..." | 如果问题包含带引号的字词组(引号中的字词出现在相同的顺序中),则匹配 | comment:"We have a problem"
|
|
( ) | 将值或搜索条件组合在一起 | status:open AND
(priority:(p0|p1) OR
severity:(s0|s1))
|
请注意以下几点:
您必须使用全大写字母来填写
AND
、OR
和NOT
。无论
NOT
运算符位于字段名称还是字段值之前,其含义都是一样的。这意味着-assignee:jim
和assignee:-jim
是等效的。使用括号在搜索查询中明确分组字词。默认情况下,问题跟踪器仅将
NOT
与紧随其后的字词相关联,并将OR
与括起它的两个字词分组。例如,搜索查询title:(a OR b NOT c AND d)
等同于title:((a OR b) AND (NOT c) AND d)
。
短线
短划线字符 (-
) 的含义因搜索查询中的上下文而异:
问题跟踪器会将搜索中字词前面的短划线视为
NOT
运算符。例如,搜索条件-assignee:none
或assignee:-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]
,其中冒号字符 (:
) 指定给定字段必须等于或包含指定值,系统才会在搜索结果中返回问题。
包含时间值(created
、modified
、resolved
、verified
和某些自定义字段)或计数值(duplicatecount
、votecount
、commentcount
和 cccount
)的字段支持以下其他关系运算符:
符号 | 说明 |
---|---|
< | 如果问题的值小于或早于您的搜索值,则匹配。 |
<= | 如果问题的值小于、早于或等于您的搜索值,则匹配。 |
> | 如果问题的值大于或等于您的搜索值,则匹配。 |
>= | 如果问题的值大于、大于等于或等于您的搜索值,则匹配。 |
时间搜索
搜索查询语言提供了一种特殊的语法,用于匹配包含时间值的字段。这样,问题跟踪器就可以根据需要搜索一段时间或相对时间。
绝对时间格式
指定时间的格式如下:
[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 小时(凌晨 4 点到 5 点,世界协调时间 [UTC])创建的问题。
时间范围
您可以在字段:值搜索条件中使用两个英文句号字符 (..
) 来指定时间范围。语法是 [field]:[start time]..[end time]
。开始时间和结束时间可以根据您的需要进行精确设置。例如,verified:2013..2015
会返回 2013、2014 或 2015 年验证过的所有问题。
相对时间格式
您还可以以距离今天的天数来指定时间。为此,请使用格式 [days]d
,其中 [days]
是您希望在搜索结果中包含的过去天数。例如,您可以使用 modified:5d
查找过去 5 天内修改的问题。
使用相对时间格式时,运算符必须是英文冒号字符 (:
),例如 created:5d
。如果您想查找不在该范围内的问题,可以使用 NOT
或 -
运算符。
例如,-verified:10d
会返回过去 10 天内未验证的问题。如果您想查找已验证但不是在过去 10 天内验证的问题,可以使用 (-verified:10d) AND status:verified
。
使用日期算术的“今天”搜索
您可以在时间搜索中使用 today
令牌来替代当前日期。它支持使用 today+10
和 today-2
等日期算术。today
令牌还可与时间范围(例如 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
的搜索。