搜尋查詢語言是您在 Google Issue Tracker 中執行問題搜尋時使用的語法。您可以在搜尋列中輸入搜尋查詢,並使用該語言。您也可以使用搜尋建構工具,以圖形方式選取條件,然後在關閉搜尋建構工具時將其轉換為查詢語言。
查詢語言可讓您依據下列條件進行搜尋:
- 關鍵字
- 欄位:值組合
您執行的搜尋可能包含多個條件,包括關鍵字和欄位:值組合的組合。查詢語言語法可讓您使用邏輯運算子、括號和引號,指定考量條件的關係和順序。
關鍵字搜尋
關鍵字是文字字串,可用於在問題中搜尋特定欄位。這些欄位如下:
- 標題
- 留言
- 附件的名稱
- 包含使用者的欄位 (例如「指派對象」或「副本收件者」)
- 包含內部 ID 編號的欄位 (例如指定含有問題的元件或熱門清單的欄位)
- 包含版本號碼的欄位
- 自訂欄位
關鍵字搜尋條件的例子是字串 configuration properties
。當您在搜尋中輸入這項條件時,Issue Tracker 會在所有元件中全域搜尋問題,並根據您的存取控制 權限,傳回欄位含有這兩個關鍵字的問題。關鍵字可以位於不同的欄位,也可以位於相同的欄位。
關鍵字也會比對一些基本同義字,因此搜尋 property
時,系統可能會額外找出含有 properties
字詞的錯誤。否則,搜尋作業只會比對完整字詞符記,而不會將查詢視為子字串。
在執行搜尋作業前,系統會移除關鍵字中的大部分特殊字元。舉例來說,my-query_text
這類查詢會分割為 my
和 query_text
符記,並傳回符合這兩個符記的錯誤。
Issue Tracker 會將分隔搜尋條件的空格字元視為隱含的 AND
運算子。您可以使用半形引號 ("
) 指定多字詞字串視為單一關鍵字。無論是否使用引號,Issue Tracker 中的所有搜尋都不會區分大小寫。
欄位:值組合搜尋
您也可以將搜尋條件指定為欄位:值組合。基礎語法為 [field]:[value]
。針對文字欄位,這個語法會比對指定欄位「包含」值的問題。對於其他類型的欄位,則會比對欄位值「相等」的問題。
舉例來說,搜尋 title:latency
會比對「Title」欄位中含有 latency
字詞的問題。搜尋 priority:p0
會找出優先順序為 p0
的問題。
系統會將任何無法辨識的欄位解讀為關鍵字搜尋。
請注意,針對時間和計數欄位,您可以使用半形冒號字元以外的其他關聯符號。請參閱「關聯運算子」。
使用「任何」和「無」進行特殊值搜尋
您可以使用特殊值 any
和 none
查詢選用欄位。any
會比對任何非空值。none
會比對空值。如需搜尋查詢語言支援的所有欄位標籤清單,請參閱 搜尋查詢參考資料。
邏輯運算子
邏輯運算子可讓您指定多個條件,並指出各條件之間的關係。引號外面的空格字元會視為隱含的 AND
運算子。問題追蹤器支援下列額外的明確邏輯運算子:
運算子 | 替代符號 | 說明 | 範例 |
---|---|---|---|
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))
|
注意事項:
AND
、OR
和NOT
必須全部大寫。NOT
運算子前置於欄位名稱或欄位值時,其含義相同。也就是說,-assignee:jim
和assignee:-jim
是等價的。使用括號,清楚地將搜尋查詢中的字詞分組。根據預設,Issue Tracker 只會將
NOT
與其後面的字詞建立關聯,並將OR
與其前後的兩個字詞建立群組。舉例來說,搜尋查詢title:(a OR b NOT c AND d)
等同於title:((a OR b) AND (NOT c) AND d)
。
虛線
根據搜尋查詢中的上下文,破折號字元 (-
) 的含義會有所不同:
問題追蹤工具會將搜尋字詞前面的破折號視為
NOT
運算子。舉例來說,搜尋條件-assignee:none
或assignee:-none
會傳回所有有指派對象的問題。Issue Tracker 會將以破折號字元連接的字串視為以引號括起。舉例來說,搜尋條件
state-of-the-art
等同於"state of the art"
。Issue Tracker 會將問題欄位中的連字詞視為以空格分隔的獨立字詞。也就是說,如果問題的標題含有
state-of-the-art
這個字詞,而您執行搜尋查詢title:(of art state the)
或title:("state of the art")
,系統就會將該問題列為搜尋結果的一部分。
關係運算子
欄位:值搜尋條件的基礎語法為 [field]:[value]
,其中冒號字元 (:
) 會指定指定欄位必須等於或包含指定值,才能在搜尋結果中傳回問題。
包含時間值 (created
、modified
、resolved
、verified
和特定自訂欄位) 或計數值 (duplicatecount
、votecount
、commentcount
和 cccount
) 的欄位支援下列額外的關聯運算子:
符號 | 說明 |
---|---|
< | 如果值小於或早於搜尋值,則會比對問題。 |
<= | 如果值小於、早於或等於搜尋值,則會與問題相符。 |
> | 如果問題的值大於或晚於搜尋值,則會相符。 |
>= | 如果問題的值大於、大於等於或等於搜尋值,則會進行比對。 |
時間搜尋
搜尋查詢語言提供特殊語法,用於比對含有時間值的欄位。這可讓 Issue Tracker 根據需求搜尋一段時間或相對時間。
絕對時間格式
指定時間的格式如下:
[yyyy]-[MM]-[dd]T[HH]:[mm]:[ss]
。
在這個格式中,[yyyy]
是 4 位數的年份,[MM]
是 2 位數的月份,[dd]
是 2 位數的日期,[HH]
是 24 小時制時鐘的 2 位數小時,[mm]
是分鐘,[ss]
是秒。即使您在日期和時間設定中選取其他時區,搜尋結果中的所有時間都會以世界標準時間解讀。
您可以提供特定程度的細節,搜尋在特定時間點前後建立的問題。舉例來說,您可以指定 created:2014-06
來尋找 2014 年 6 月的任何時間點建立的問題。如要進一步指定,您可以搜尋 created:2014-06-03T04
,找出 2014 年 6 月 3 日第 4 小時 (協調世界時凌晨 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+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
注意:如同「絕對時間格式」一節所述,在 Issue Tracker 中搜尋時間時,系統會以世界標準時間為準。使用 today
的搜尋同樣適用於這個原則。