看起來很複雜的 DEVONthink 搜尋,用 Alfred Workflow 就能輕鬆搞定
DEVONthink 作為一款資料管理工具,在 macOS 平臺上久負盛名。在 DEVONthink 的官網上,它是這麼介紹自己的:Information management reinvented(重新發明資訊管理)。 DEVONthink 可以統一儲存、管理和檢索各種常見格式的文件,包括但不限於 Office、PDF、網頁書籤等。而且, DEVONthink 還能關聯、聚合相關文件(不支援中文),所以有許多人用它來作為學術工具使用。另外, DEVONthink 還支援 Dropbox、iCloud、WebDav 等多種同步方式,充分滿足不同人群對於同步的需求。少數派網站上有多篇優秀的使用經驗分享文章,有興趣的可以看看。
延伸閱讀: ofollow,noindex" target="_blank">從 Evernote 到 DEVONthink
5 個實用指令碼,把 DEVONthink 打造成個人知識庫起初我開始使用 DEVONthink 時,在官網上看到有 用於搜尋的 Alfred Workflow ,試用時卻發現已經年久失修,早已不適配 2016 年釋出的 Alfred 3。於是,我就拿來修改了一番,形成了 第一個版本 。但是這個 Workflow 只能用 DEVONthink 開啟搜尋結果中的文件,這不能滿足我的使用需求,所以在修復原有功能的基礎上,我為它添加了兩個功能:
-
用外部程式開啟文件,比如直接用 Word 開啟 docx 檔案等
-
在 DEVONthink 中顯示文件,就像常用的「在訪達中顯示」,用於在 DEVONthink 中執行一些後續的操作

但是,前段時間我又發現了這個 Workflow 的兩個問題:
-
搜尋結果不夠好,往往不能快速又準確地搜到自己想要的文件
-
顯示資訊很單一,有效資訊僅有文件名稱,導致無法區分不同資料夾的同名文件
DEVONthink Search 全新版本
舊版本的 Alfred Workflow 效果不理想,所以我就試著能否改進下,就有了今天介紹的新版本。
由於新版本使用了與之前完全不同的資料來源和實現方式,無法支援 DEVONthink Personal,所以分成了兩個版本來實現不同的功能:
-
DEVONthink Search:適用於 DEVONthink Personal,就是原有的 Workflow 去除了 Personal 版本所不支援的多餘功能,僅支援使用下文中介紹的
dnt
動作進行搜尋。 -
DEVONthink Pro Search:適用於 DEVONthink Pro / Pro Office,搜尋結果更準確,功能更豐富。這也正是今天介紹的主角。
你可以在 GitHub 下載相應的 Alfred Workflow。然後,我們來看下如何使用。
1. 輸入 dnt + 關鍵詞
在所有資料庫中進行搜尋。如果同時使用這個 Workflow 和在 DEVONthink 中直接進行搜尋,可以看到搜尋得到的結果基本一致,並都按照搜尋關鍵詞匹配得分進行排序。不同的是,這個 Workflow 預設過濾了結果中的資料夾。

從上圖的搜尋結果中可以看到,每一個結果的副標題顯示了目標文件 所在資料庫中的資料夾路徑 ,這也就解決了同名文件無法區分的問題。當按下 ⌘Command
時,則顯示為當前選中文件的標籤資訊 (Tag)。

2. 輸入 dnm + 標籤1,標籤2,……
,可以列出所有資料庫中 同時 附有這些標籤的文件。如果平時有加標籤的習慣,使用這個功能可以很方便地得到某一類的文件。
需要注意的是:多個標籤要以英文逗號分隔,而且標籤必須是準確完整的,如標籤“aBcD”,不能輸入“aBc” 或 “abcd”。

3. 輸入 dnd
選擇需要搜尋的資料庫,這個功能對於使用多個數據庫管理文件的使用者比較有用。在選擇需要的資料庫後,可以:
-
按下
↩Return
確認,接著輸入關鍵詞
以在該資料庫中進行搜尋 -
按下
⌘Command + ↩Return
列出該資料庫中的所有標籤。選擇某個標籤並按下回車鍵,可列出所有附有該標籤的文件
在使用上述動作併成功顯示搜尋結果後,你可以繼續使用以下動作:
-
按下
↩Return
,用 DEVONthink 開啟所選檔案。(當你僅需檢視檔案時,可以使用這個動作) -
按下
⌘Command + ↩Return
,用外部程式開啟所選檔案。例如,使用預設編輯器開啟 Markdown 檔案,使用 PDF Expert 開啟 PDF 檔案等。(當你需要編輯檔案等情況下使用這個動作) -
按下
⌥Option + ↩Return
,在 DEVONthink 視窗中顯示所選檔案。(當你需要在 DEVONthink 中操作檔案時使用)

配置
動作 dnt
、 dnm
是在所有資料庫中搜索,但是有時我們可能需要遮蔽某些資料庫。例如,我有個名為「存檔」的資料庫,用來儲存一些歷史檔案或備份一些網路上的網頁或資料,平時一般不會檢視,也就不需要出現在搜尋結果中。所以,我為這個 Workflow 添加了個相關的配置項。
如果你想要遮蔽某些資料庫,可以這麼做:
-
開啟 DEVONthink,在介面左側右鍵點選某個資料庫,選擇
Copy Database Link
,獲得類似於x-devonthink-item://abfds-fdsfsff
的連結。 -
連結中的
abfds-fdsfsff
部分就是該資料庫的 UUID。 -
如果僅遮蔽一個數據庫,直接在如圖所示位置填入 UUID 即可。如果是多個,則以英文逗號分隔後填入,如
xxx-xxx,xxx-xxx
。

其它
在開發過程中,因為 Alfred Workflow 需要 JSON 格式的資料,但是 AppleScript 不支援,所以只好轉而使用 JXA(可以將其看作具有 AppleScript 功能的 JavaScript 版本)。JavaScript 原生支援 JSON,並且可以擺脫 AppleScript 那種「類似自然語言」的語法形式,這讓我非常開心。但是在編寫根據標籤搜尋的功能時,沒想到竟遇到一個 Bug,無法獲得搜尋結果。於是,給 DEVONthink 官方發郵件,結果回信說不對 JXA 方面提供幫助,可能他們也知道 JXA 在 macOS 中不受重視,且存在各種 Bug。
當你在 DEVONthink 中搜索時,如果關鍵詞中包含 CJK 文字(中國、日本、韓國),則需要在其前面加上 ~
。例如,搜尋 你abc我他
,需改為 ~你abc~我他
。在 DEVONthink Pro Search 這個 Workflow 的設定中,我使用正則表示式 /(\p{Unified_Ideograph}+)/ug
找出中文字元並自動新增 ~
,免去了每次手動新增的麻煩,但是該正則表示式無法匹配日韓文字,我對其也不太瞭解,請懂得相關正則表示式的幫忙改進下。
原來的 Alfred Workflow 版本是利用 DEVONthink 生成的 Spotlight Index 來實現搜尋的,可獲取的資料非常有限。而我製作的新版本選擇直接從 DEVONthink 中讀取資料後,可獲取的資料與可完成的操作就非常多了,並且還有很大的成長空間。下一步,我還計劃為它新增 篩選出未讀文件 的功能,對於使用 DEVONthink 做稍後讀等用途的使用者可能會比較有用。如果你有什麼需求也可以說出來討論下。
這個 Workflow 在 GitHub 上開源,歡迎下載使用、共同改進。
> 下載少數派客戶端、關注少數派公眾號 ,讓你的工作更有效率 ⏱
> 獲取特惠、正版、高品質軟體,盡在 少數派數字商城·正版軟體 :tada: