詳細文當見官網: https://help.aliyun.com/product/125177.html
使用者可以通過/file/search接口搜尋自己drive下的檔案
query規則說明:
- 支援的資料類型:
- 基本類型:long、string、bool、double
- 複合類型:array,date(時間類型,ISO時間: "2019-08-13T06:19:22.870Z")
- 基本類型支援的搜尋:
- long: =, <, >, <=, >=
- string: = (精确搜尋), prefix(字首搜尋), match(模糊搜尋,隻有name字段支援)
- bool: =
- double: =, <, >, <=, >=
- 複合類型支援的搜尋:
- array: in (多條件的=)
- date: =, <, >, <=, >=
- 邏輯操作支援:not、and、or
- 支援括号,優先級為: “括号 > not > and > or”
query舉例:
- 精确查詢。
// 查詢檔案名為 “彙報材料.ppt” 的檔案
name = "彙報材料.ppt"
- 範圍查詢
查詢2019年1月14日前建立的檔案
created_at < "2019-01-14T00:00:00"
- 模糊比對
// 查詢檔案名包含 “彙報” 的檔案
name match "彙報"
- 邏輯組合查詢
// 查詢2019年1月14号建立的檔案
created_at > "2019-01-14T00:00:00" and created_at < "2019-01-15T00:00:00"
- 複雜邏輯查詢
// 查詢檔案size大于1024并且hidden為false并且file_extension不等于“mp4”的檔案
size > 1024 and hidden = false and not file_extension = 'mp4'
- 數組查詢
// 查詢字尾名為jpg、png或者gif的檔案
file_extension in ["jpg", "png", "gif"]
- 字首查詢
// 查詢檔案名為“項目1”開頭的檔案
name prefix "項目1"
order_by規則:
- ASC代表正序,DESC代表逆序
- 文法為 字段名 + 空格 + ASC/DESC
- 如果多個字段排序則需要用逗号隔開
- 前面的規則優先級高
order_by舉例:
- 單個規則正序
// 按名稱正序
name ASC
- 單個規則逆序
// 按建立時間逆序
created_at DESC
- 多個排序規則
// 先按建立時間逆序,如果建立時間相同,則按名稱正序
created_at DESC, name ASC
支援搜尋和排序的字段
| 字段名 | 類型 | 可搜尋 | 可排序 | 描述 |
| --- | --- | --- | --- | --- |
| parent_file_id | STRING | ✔️ | -- | 固定目錄搜尋,隻搜尋一級 |
| name | STRING | ✔️ | ✔️ | 檔案名(模糊分詞),可模糊搜尋 |
| type | STRING | ✔️ | ✔️ | 檔案類型file、folder |
| file_extension | STRING | ✔️ | -- | 檔案字尾名 |
| description | STRING | ✔️ | -- | 描述(single_word分詞),可短語比對 |
| mime_type | STRING | ✔️ | -- | 檔案mimeType搜尋 |
| starred | BOOL | ✔️ | -- | 是否收藏 |
| created_at | DATE | ✔️ | ✔️ | 建立時間 |
| updated_at | DATE | ✔️ | ✔️ | 修改時間 |
| status | STRING | ✔️ | -- | 檔案狀态 |
| trashed | BOOL | ✔️ | -- | 是否移入資源回收筒 |
| explicitly_trashed | BOOL | ✔️ | -- | 是否顯式移入資源回收筒 |
| hidden | BOOL | ✔️ | --| 是否隐藏檔案 |
| size | LONG | ✔️ | ✔️| 檔案大小 |
| image_time | DATE | ✔️ | ✔️ | 照片拍攝時間 |
| label | STRING | ✔️ | -- | 系統标簽名稱 |
| category | STRING | ✔️ | -- | 檔案類型,image、video、doc、audio、app、others |
- LONG: 長整型(int64)
- BOOL: 布爾類型
- DATE: 時間類型,用雙引号或單引号括起來,與字元串類型一緻。格式"2006-01-02T00:00:00",預設零時區。
- STRING: 字元串類型
實作介紹,基于antlr4實作
檢視文法樹
# 第一步,生成java版的解析器
antlr SearchParser.g4
# 第二步,生成可執行檔案
javac SearchParser*.java
# 第三步,生成文法樹
grun SearchParser start -gui
這裡輸入待解析的字元串,ctrl+D 結束
# 如果javac出錯執行
cd /usr/local/lib
$ sudo curl -O https://www.antlr.org/download/antlr-4.7.2-complete.jar
export CLASSPATH=".:/usr/local/lib/antlr-4.7.2-complete.jar:$CLASSPATH"
# 參考 https://www.antlr.org/
效果:

Goland檢視文法樹插件
在需要測試的文法上點右鍵, 選擇Test Rule xxx
效果如下:
生成Go語言的Visitor模式
antlr -no-listener -visitor -Dlanguage=Go -package grammar SearchParser.g4
# -package grammar表示生成的代碼的包名為grammar