天天看點

内容協作平台-檔案搜尋介紹

詳細文當見官網: https://help.aliyun.com/product/125177.html

使用者可以通過/file/search接口搜尋自己drive下的檔案

query規則說明:

  1. 支援的資料類型:
    1. 基本類型:long、string、bool、double
    2. 複合類型:array,date(時間類型,ISO時間: "2019-08-13T06:19:22.870Z")
  2. 基本類型支援的搜尋:
    1. long: =, <, >, <=, >=
    2. string: = (精确搜尋), prefix(字首搜尋), match(模糊搜尋,隻有name字段支援)
    3. bool: =
    4. double: =, <, >, <=, >=
  3. 複合類型支援的搜尋:
    1. array: in (多條件的=)
    2. date: =, <, >, <=, >=
  4. 邏輯操作支援:not、and、or
  5. 支援括号,優先級為: “括号 > not > and > or”
query舉例:
  1. 精确查詢。
// 查詢檔案名為 “彙報材料.ppt” 的檔案
name = "彙報材料.ppt"           
  1. 範圍查詢
查詢2019年1月14日前建立的檔案
created_at < "2019-01-14T00:00:00"           
  1. 模糊比對
// 查詢檔案名包含 “彙報” 的檔案
name match "彙報"           
  1. 邏輯組合查詢
// 查詢2019年1月14号建立的檔案
created_at > "2019-01-14T00:00:00" and created_at < "2019-01-15T00:00:00"           
  1. 複雜邏輯查詢
// 查詢檔案size大于1024并且hidden為false并且file_extension不等于“mp4”的檔案
size > 1024 and hidden = false and not file_extension = 'mp4'           
  1. 數組查詢
// 查詢字尾名為jpg、png或者gif的檔案
file_extension in ["jpg", "png", "gif"]           
  1. 字首查詢
// 查詢檔案名為“項目1”開頭的檔案
name prefix "項目1"           
order_by規則:
  • ASC代表正序,DESC代表逆序
  • 文法為 字段名 + 空格 + ASC/DESC
  • 如果多個字段排序則需要用逗号隔開
  • 前面的規則優先級高
order_by舉例:
  1. 單個規則正序
// 按名稱正序
name ASC           
  1. 單個規則逆序
// 按建立時間逆序
created_at DESC           
  1. 多個排序規則
// 先按建立時間逆序,如果建立時間相同,則按名稱正序
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