跳轉到主要內容
工程的博客

目錄和發現你的磚筆記本更快

2021年9月22日 工程的博客

分享這篇文章
這是一個協作的磚和愛beplay娱乐ios思唯爾。顛覆性技術主任感謝達林McBeath——愛思唯爾,他的貢獻。

作為全球領先的信息和分析,愛思唯爾幫助研究人員和醫護人員推進科學和改善衛生成果,造福社會。它支持的工作研究和衛生夥伴超過140年了。從其根源出版、愛思唯爾提供了知識和價值的分析,幫助用戶取得突破和推動社會的進步。數碼解決方案等ScienceDirect,斯高帕斯,SciVal,ClinicalKeySherpath支持戰略科研管理,研發性能,臨床決策支持,健康教育。研究人員和醫護人員依靠愛思唯爾的2500 +數字化期刊,包括《柳葉刀》細胞;40000電子書的標題;和其標誌性的參考書,如灰色的解剖

愛思唯爾的客戶數據磚大約六年了。現在有成百上千的用戶和數以萬計的筆記本電腦在他們的工作空間。在某種程度上,愛思唯爾的磚用戶自身成功的受害者,因為現在有太多的筆記本搜索找到一些早期作品。

磚工作區並提供關鍵字搜索,但我們常常發現需要定義高級搜索標準,如創造者、最後更新,編程語言,筆記本命令和結果。

有趣的是,我們成功地實現這一功能與磚使用notebook-based 100%解決方案功能。正如您將看到的,這使得它容易設置客戶的磚的環境。

api方法掃描筆記本

磚提供了一組健壯的api使編程管理賬戶和工作區。這個解決方案,我們利用工作區API以編程方式和出口筆記本電腦和文件夾列表在工作區。

我們也並行化API調用加快編目過程並使其可配置在磚每秒30請求的速率限製。為了避免“429:太多的請求”錯誤,我們已經實現了指數進行重試機製的啟發三角洲分享Apache火花™連接器

編目使用拚花

這個解決方案不需要任何外部Solr或全文搜索係統ElasticSearch。相反,我們利用鋪文件為我們的筆記本指數。索引是一個數據表,每一行描述一個單獨的命令細胞。每一行包含字段:

  • 筆記本信息:語言(nbLang)、名稱(nbName),文件夾路徑(nbFolder), url (nbUrl)
  • 命令信息:單元格文本(cText),最後日期(cDateTime),細胞語言(叮當聲),url(卷)

截圖磚數據瀏覽器notebook_index表模式

筆記本notebook-based解決方案搜索

提供的索引和搜索功能三個筆記本(NotebookIndex,NotebookSearchNotebookSimilarity)。兩個助手筆記本(NotebookIndexRunNotebookSimilarityRun)可以很容易地配置指數和相似的功能。

NotebookIndex

notebook-based解決方案利用工作區API以編程方式出口筆記本和填充我們的拚花表。

大多數組織都工作區對象訪問控製使這樣一個用戶隻能管理自己的筆記本和共享位置。NotebookIndex隻運行和用戶的權限僅限於筆記本用戶可以查看。

如果一個組織想要一個完整的目錄的所有筆記本電腦在他們的工作空間,管理員必須運行一個工作目錄索引。此外,我們預計大多數組織將用戶和工作組創建自己的索引文件,這將隻包含記錄筆記本用戶可以看到的。

NotebookIndexRun

這是一個輔助的筆記本用戶或組運行索引過程。它讓他們選擇哪個用戶文件夾將被掃描,如他們自己或者他們的成員組。愛思唯爾發現了這個實驗室組的用戶尤其有用。

如上所述,隻有筆記本用戶可讀的運行索引筆記本將會出現在索引中。在下麵的例子中,中包含的筆記本/共享/文件夾,someone1,someone2,一個人一個人、用戶文件夾將被索引。

截圖NotebookIndexRun筆記本

NotebookSearch

每個用戶希望使用NotebookSearch應該克隆這個筆記本到自己的工作區。筆記本電腦提供了示例搜索前麵描述的索引表。我們希望用戶可以編輯他們的複製指定要使用哪個表,然後定製的示例來滿足他們的需求。幾個這樣的搜索的例子給出了以後在這個博客上。

的例子之外,我們還提供了一個displaySearchResults函數顯示使用HTML更用戶友好的搜索結果:

  • 的語言列標識語言命令,並顯示文件夾的文件夾位置筆記本電腦(筆記本中標識列)。
  • 筆記本鏈接包含匹配的帶你的筆記本電腦。
  • 命令鏈接帶你去實際命令筆記本內的細胞。

截圖displaySearchResults命令的輸出,以查看筆記本(命令)與過濾結果,用戶必須具有讀權限。

NotebookSimilarity和NotebookSimilarityRun

既然我們已經捕獲了所有命令在所有筆記本電腦在我們的工作空間,我們可以進一步分析在筆記本上運行目錄。一個想法是識別類似筆記本使用自然語言處理(NLP)技術。

因為目前還沒有出處鏈跟蹤的曆史筆記克隆,這可能有助於識別筆記本已經克隆。雖然它是不可能確定最初的筆記本從其他筆記本被克隆,我們可以確定筆記本電腦使用非常相似的文本基於閾值。

還有許多其他的措施相似,每個都有自己的怪癖。NotebookSimilarity筆記本演示了一個簡單的例子使用Jaccard距離代表每個筆記本的詞集。

我們應用一些簡單的預處理來消除減價,結果和空細胞,將所有筆記本作為字符串的命令。然後,我們利用MinHash函數在MLlib Jaccard距離,可伸縮性可以成千上萬的筆記本。

相比之下筆記本中發現索引表產生一個相似的分數。而不是把一個完整的矩陣的相似之處,我們指定一個最大相似性距離(例如,0.1)。對於每一個筆記本,筆記本的列表內,距離保持準備搜索。

截圖NotebookSimilarity筆記本

示例用例:殼牌、SQL和Scala火花

不是很好,知道哪些筆記本包含命令,利用shell命令嗎?下麵的示例搜索shell命令。換句話說,細胞開始神奇的命令% sh。(注意:當我們正在尋找特定的細胞使用shell命令,他們就會出現在筆記本電腦,有一個整體的默認語言。因此,它是有意義的展示第一列告訴什麼是默認語言。)

截圖的搜索使用shell命令的輸出細胞

你曾經遇到的情況試圖記住如何使用特定的火花SQL函數——也許你或朋友使用?不會一個語境的例子比訴諸於更有用的網絡搜索,希望能找到一根針在web幹草堆?下麵的示例搜索命令在一個特定用戶的區域包含字符串“collect_list。”

截圖的搜索使用scala命令的輸出單元,包含字符串“collect_list”,是在一個特定用戶的區域

你是否曾想知道是什麼筆記本最近被處死嗎?下麵的示例搜索筆記本包含所執行的一個細胞自8月12日,2021年。通過指定distinctNotebooks = true我們卷起所有的命令(包含一個匹配)同樣的筆記本一個打擊的筆記本,隻提供一個鏈接到筆記本。

截圖的搜索使用scala命令輸出細胞自8月12日,2021年

上述基本的例子隻有劃傷的表麵可以搜索索引表。以下是一些代表性的問題我們已經看到磚社區(原論壇)在過去的幾年裏,應該很容易解決筆記本發現:

  • 我更新一個源表和需要找到所有表的筆記本。我試著使用磚UI中的搜索功能,但我的問題是我得到的結果從每個文件夾,包括其他用戶。有辦法有條件地限製搜索一個特定的文件夾?
  • 你能搜索筆記本使用條件,如精確短語,包含(不),通配符或正則表達式?
  • 有辦法搜索一個字符串在所有筆記本電腦嗎?我想找出是否三角洲表中使用筆記本電腦。
  • 我可以尋找類似的命令在其他筆記本調試嗎?

開始

愛思唯爾實驗室公布了這個解決方案的筆記本發現工具,現在發布下開源很寬容的MIT許可。提供筆記本發現DBC(磚檔案)文件,它是非常簡單的開始:

  1. 下載檔案:下載筆記本發現存檔文件(DBC)位置在您的機器上。
  2. 導入筆記本:磚的UI,下載的DBC文件導入到一個文件夾。工作區文件夾存檔導入無關工作區文件夾你想指數。
  3. 生成索引文件:生成索引文件的人需要編輯NotebookIndexRun助手,顯示文件夾索引和索引文件的指定位置。索引過程將開始和完成後生成索引文件。
  4. 尋找筆記本:其他用戶應該克隆NotebookSearch筆記本到區域和編輯使用正確的索引文件。他們可以按自己的喜好編輯搜索。下麵給出幾個例子搜索示例中部分。
  5. 檢測類似筆記本電腦:如果用戶想找類似的筆記本,他們需要編輯NotebookSimilarityRun文件生成相似文件和運行工作。

在過去的幾個月,愛思唯爾用戶發現筆記本的發現是非常有用的,決定與社區分享。我們希望你受益於使用工具

免費試著磚
看到所有工程的博客的帖子
Baidu
map