搜索笔记

搜索笔记数据和元数据


概述

NoteStore.findNotesNoteStore.findNotesMetadata 是功能很强大的云 API 函数。他们允许你在一个用户帐户中搜索笔记。你可以搜索笔记的所有文本,也可以搜索类似笔记本,笔记标题,标签,日期或地点这些元数据。

为什么有两个搜索函数?
NoteStore.findNotes 和 NoteStore.findNotesMetadata 允许你进行完全相同的搜索。他们有不同的方式来控制你得到的结果。为了高效,你通常应当使用 findNotesMetadata 来精确控制你的应用需要的数据模型。本页的示例代码展示了如何使用 findNotesMetadata。

基本搜索

我们先看一下如何查找用户帐户中的最新更改笔记:

为了高效,findNotes 会把搜索结果分页(paginate),所以每次调用 findNotes 只取得全部搜索结果的一个子集。在这种情况下,我们每次取得 10 个笔记作为结果。我们取得的 NoteList 也告诉了我们符合搜索条件的所有结果数目。

为了取得所有符合搜索条件的结果,我们需要多次调用 findNotes:

处于效率的考虑,findNotes 和 findNotesMetadata 返回的 Note 和 NoteMetadata 对象不会包含笔记的内容和资源数据。如果要获取这些数据的话,需要调用另外的 API:

高级搜索

给搜索增加条件很容易。所有的搜索参数都在 NoteFilter 对象中指定。NoteFilter 有一些特定的域,这些域允许你按照笔记本和标签来限制你的搜索。你还可以控制是否要搜索回收站里的内容(它们默认被忽略)。如果要搜索特定笔记本中的笔记,可以直接设置 NoteFilter 中的 notebookGuid 域:

要根据其他条件搜索,请使用 NoteFilter 中的 words 域。这个域接受所有的印象笔记搜索语法,这个语法可以让你根据任何条件来查询笔记。让我们来搜索包含 "elephant" 的笔记内容:

任何在笔记标题,笔记内容或其中一个笔记标签中包含“elephant”这个词的笔记都符合这个查询。如果笔记中的图像里有“elephant”这个词,这个笔记也会被搜索出来。图像识别章节介绍了搜索图像的信息。

搜索语法允许你根据多个条件搜索。你可以指定是否必须符合所有条件(AND)或者只需符合其中任一条件(OR)。不能在同一个查询中嵌套与(AND)和或(OR)。这时一个在最后一天创建的笔记中,查找笔记标题包含“elephant”的搜索: