搜尋查詢語言

搜尋查詢語言是您在 Google Issue Tracker 中執行問題搜尋時使用的語法。您可以在搜尋列中輸入搜尋查詢,並使用該語言。您也可以使用搜尋建構工具,以圖形方式選取條件,然後在關閉搜尋建構工具時將其轉換為查詢語言。

查詢語言可讓您依據下列條件進行搜尋:

  • 關鍵字
  • 欄位:值組合

您執行的搜尋可能包含多個條件,包括關鍵字和欄位:值組合的組合。查詢語言語法可讓您使用邏輯運算子、括號和引號,指定考量條件的關係和順序。

關鍵字搜尋

關鍵字是文字字串,可用於在問題中搜尋特定欄位。這些欄位如下:

  • 標題
  • 留言
  • 附件的名稱
  • 包含使用者的欄位 (例如「指派對象」或「副本收件者」)
  • 包含內部 ID 編號的欄位 (例如指定含有問題的元件或熱門清單的欄位)
  • 包含版本號碼的欄位
  • 自訂欄位

關鍵字搜尋條件的例子是字串 configuration properties。當您在搜尋中輸入這項條件時,Issue Tracker 會在所有元件中全域搜尋問題,並根據您的存取控制 權限,傳回欄位含有這兩個關鍵字的問題。關鍵字可以位於不同的欄位,也可以位於相同的欄位。

關鍵字也會比對一些基本同義字,因此搜尋 property 時,系統可能會額外找出含有 properties 字詞的錯誤。否則,搜尋作業只會比對完整字詞符記,而不會將查詢視為子字串。

在執行搜尋作業前,系統會移除關鍵字中的大部分特殊字元。舉例來說,my-query_text 這類查詢會分割為 myquery_text 符記,並傳回符合這兩個符記的錯誤。

Issue Tracker 會將分隔搜尋條件的空格字元視為隱含的 AND 運算子。您可以使用半形引號 (") 指定多字詞字串視為單一關鍵字。無論是否使用引號,Issue Tracker 中的所有搜尋都不會區分大小寫。

欄位:值組合搜尋

您也可以將搜尋條件指定為欄位:值組合。基礎語法為 [field]:[value]。針對文字欄位,這個語法會比對指定欄位「包含」值的問題。對於其他類型的欄位,則會比對欄位值「相等」的問題。

舉例來說,搜尋 title:latency 會比對「Title」欄位中含有 latency 字詞的問題。搜尋 priority:p0 會找出優先順序為 p0 的問題。

系統會將任何無法辨識的欄位解讀為關鍵字搜尋

請注意,針對時間和計數欄位,您可以使用半形冒號字元以外的其他關聯符號。請參閱「關聯運算子」。

使用「任何」和「無」進行特殊值搜尋

您可以使用特殊值 anynone 查詢選用欄位。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))

注意事項:

  • ANDORNOT 必須全部大寫。

  • NOT 運算子前置於欄位名稱或欄位值時,其含義相同。也就是說,-assignee:jimassignee:-jim 是等價的。

  • 使用括號,清楚地將搜尋查詢中的字詞分組。根據預設,Issue Tracker 只會將 NOT 與其後面的字詞建立關聯,並將 OR 與其前後的兩個字詞建立群組。舉例來說,搜尋查詢 title:(a OR b NOT c AND d) 等同於 title:((a OR b) AND (NOT c) AND d)

虛線

根據搜尋查詢中的上下文,破折號字元 (-) 的含義會有所不同:

  • 問題追蹤工具會將搜尋字詞前面的破折號視為 NOT 運算子。舉例來說,搜尋條件 -assignee:noneassignee:-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],其中冒號字元 (:) 會指定指定欄位必須等於或包含指定值,才能在搜尋結果中傳回問題。

包含時間值 (createdmodifiedresolvedverified 和特定自訂欄位) 或計數值 (duplicatecountvotecountcommentcountcccount) 的欄位支援下列額外的關聯運算子:

符號 說明
< 如果值小於或早於搜尋值,則會比對問題。
<= 如果值小於、早於或等於搜尋值,則會與問題相符。
> 如果問題的值大於或晚於搜尋值,則會相符。
>= 如果問題的值大於、大於等於或等於搜尋值,則會進行比對。

時間搜尋

搜尋查詢語言提供特殊語法,用於比對含有時間值的欄位。這可讓 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+10today-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 的搜尋同樣適用於這個原則。