跳转到主要内容
工程的博客

目录和发现你的砖笔记本更快

2021年9月22日 工程的博客

分享这篇文章
这是一个协作的砖和爱思唯尔。颠覆性技术主任感谢达林McBeath——爱思唯尔,他的贡献。

作为全球领先的信息和分析,爱思唯尔帮助研究人员和医护人员推进科学和改善卫生成果,造福社会。它支持的工作研究和卫生伙伴超过140年了。bob体育外网下载从其根源出版、爱思唯尔提供了知识和价值的分析,帮助用户取得突破和推动社会的进步。数码解决方案等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许可。bob下载地址提供笔记本发现DBC(砖档案)文件,它是非常简单的开始:

  1. 下载档案:下载笔记本发现存档文件(DBC)位置在您的机器上。
  2. 导入笔记本:砖的UI,下载的DBC文件导入到一个文件夹。工作区文件夹存档导入无关工作区文件夹你想指数。
  3. 生成索引文件:生成索引文件的人需要编辑NotebookIndexRun助手,显示文件夹索引和索引文件的指定位置。索引过程将开始和完成后生成索引文件。
  4. 寻找笔记本:其他用户应该克隆NotebookSearch笔记本到区域和编辑使用正确的索引文件。他们可以按自己的喜好编辑搜索。下面给出几个例子搜索示例中部分。
  5. 检测类似笔记本电脑:如果用户想找类似的笔记本,他们需要编辑NotebookSimilarityRun文件生成相似文件和运行工作。

在过去的几个月,爱思唯尔用户发现笔记本的发现是非常有用的,决定与社区分享。我们希望你受益于使用工具

免费试着砖
看到所有工程的博客的帖子