查找相关笔记

给予笔记更多信息


最近在 2012 年度的印象笔记百宝箱大会上,我们宣布了一个给第三方开发者和合作方的新 API,这就是 NoteStore.findRelated。顾名思义,这个函数允许客户端请求与提供数据(可以是特定笔记或一段文本)相关的笔记,笔记本和标签。

Github 上面,你可以找到一个使用 findRelatedPython 应用例子。本页中的代码是直接从这个例子应用中拿来的,所以你可以继续关注和更改这个应用。

假设你已经通过了云 API 的认证,并且已经有了一个用来进行相关搜索的笔记,下面就是进行相关搜索的基本实现:

除了认证 token(不管是测试用的开发者 token 还是通过 OAuth 获取的认证 token)以外,我们需要创建和填充两个作为参数传给 findRelated 的对象:Related QueryRelatedResultSpec

RelatedQuery

这个类用来存放我们希望得到相关项的东西(一条笔记或一段文字)。在上面的代码片段中,我们故意采用了 parameter 这个模糊的变量名,它可以是一个 Note 对象,也可以是一段文字。当我们定义 RelatedQuery 时,我们使用相关查询基于的笔记的 GUID(这里假设 parameter 是一条笔记)并把这个 GUID 赋值给 RelatedQuery 中的 noteGuid 成员变量,或者,如果 parameter 不是笔记而是其他的东西,我们使用它来填充 RelatedQuery 对象中的 plainText 变量。

值得注意的是,我们必须选择 plainText 或者 noteGuid; 我们不能同时使用它们,也不能同时不使用它们。

(更多关于 RelatedQuery 的信息请参考 API 参考)。

RelatedResultSpec

RelatedResultSpec 使我们可以控制调用 findRelated 时印象笔记云 API 返回的结果类型和数目。我们可以填充一个或多个如下的成员变量:

  • maxNotes
  • maxNotebooks
  • maxTags

它的功能和字面上的一样;如果你赋值给 maxNotes 一个数目,我们将得到这个数目(或者更少)的笔记作为结果。笔记本和标签也是类似的使用方法。唯一需要注意的地方是,如果你不给其中一个或多个变量赋值,那么就不会返回变量所对应类型的结果。

在我们的例子中,我们只定义了 maxNotes。这意味着我们的 RelatedResultfindRelated 返回的类型)不会包含任何笔记本和标签。

(更多关于 RelatedResultSpec 的信息请参考 API 参考)。

总结

在上面的实现中 - 假定至少有一条笔记满足我们的条件 - 你将得到一个包含最多 3 条相关笔记的 RelatedResult 对象。这些是 Note 对象,所以你可以查询它们的名字,GUID,元数据等。

findRelated 的函数定义在我们的 API 参考文档中可以找到。这个方法在我们所有的 SDK 中都提供。这些 SDK 可以在 Github 上下载。

如果需要更多的关于我们 API 或开发者支持的信息,请参考开发者站点