印象笔记搜索语法

您所在的位置:网站首页 教学方法有哪些种 印象笔记搜索语法

印象笔记搜索语法

2024-05-17 11:45| 来源: 网络整理| 查看: 265

搜索语法 概述

云 API 允许你在某个用户帐户内搜索笔记,这是一项强大的搜索功能。本文档给出完整的搜索语法。如果需要学习如何使用搜索功能,请参考 搜索笔记 章节.

检索词 日期 & 时间参数 例子 形式化搜索语法

印象笔记将所有对笔记的搜索转化成基于文本的简单字符串形式。该内部搜索格式用于 SavedSearch 查询,有能力的用户也可以直接使用。印象笔记服务以及所有客户端都实现了该搜索语法,因此,在所有系统上,相同的搜索必然能得到相同的结果。

根据简单的检索词列表从一个笔记本(或“所有笔记本”)中寻找匹配,这是印象笔记的搜索语法。默认情况下,搜索结果是单个检索词所匹配的笔记的交集。但是,当搜索中包含 “ any: ” 修饰符时,搜索结果是这些单独匹配结果的并集,只要笔记匹配其中任一个检索词,就能被返回。显然,如果仅有一个检索词,那么,无论是否包含 “ any: ” 修饰符,得到的结果都一样。

字符串匹配是大小写不敏感的,多个空格会作为一个空格处理。

搜索语法还包含形如“修饰符:参数”的一套高级搜索表达式。一条笔记符合满足合适条件的时候就能匹配该表达式。检索词的比较方式视修饰符的类型而定,因此日期与字符串的比较方式可能会不同。

可以在任何检索词前面加一个负号“-”对条件取反。这意味着只有不满足该条件的笔记才会被匹配。在搜索中每个检索词可以是下面其中一个:

检索词

这部分描述了搜索语法是如何来解释搜索表达式中的检索词的。

范围修饰符

notebook:[nb name] - 将匹配指定名字的笔记本中的笔记。它必须是搜索中的第一个词。名字匹配是大小写敏感的。因为笔记的笔记本属性具有排他性,搜索的时候最多只能指定一个笔记本。如果搜索的时候未指定笔记本,该搜索将遍历用户的所有活动笔记本。指定的笔记本将不会被“any”操作符产生的“union”行为包含。例如:

notebook:"Bob's first notebook" 匹配该笔记本里面的所有笔记。 notebook:"Hot Stuff" any: mexican italian 匹配笔记本“Hot Stuff”里面同时包含“mexican”和“italian”两个单词的笔记。

any: - 如果该表达式出现在搜索表达式的开始处(如果有“notebook”,则应在其之后),那么将会返回满足任何其他检索词条件的笔记。如果没有“any”,那么就采用默认的行为:笔记必须满足所有搜索条件。该表达式不能加负号取反。

按文字匹配检索词

如果没有发现高级修饰符,检索词将会按照普通文本搜索在笔记里面进行匹配。单词或者用引号括起来的短语必须精确的匹配笔记内容、标题、标签或者智能识别索引里面的一个单词或者短语。笔记内容里面的单词通过空白字符或者标点符号进行分词。可以在搜索关键词结尾加上通配符,从而来匹配某个单词的起始部分。搜索是大小写不敏感的。(由于服务扩展性的原因,通配符只允许在检索词的结尾出现,而不能在开始和中间出现。)在引号括起来的短语或者笔记中,多个空白字符和/或标点符号将会被当做单个空格来匹配。在括起来的短语中可以用反斜杠“\”来转义引号。例如:

potato 匹配: "Sweet Potato Pie" 不匹配: "Mash four potatoes together" Ever* 匹配: "Evernote Corporation" 不匹配: "forevernote" "San Francisco" 匹配: "The hills of San Francisco" 不匹配: "San Andreas fault near Francisco winery" -potato 匹配: "Mash four potatoes together" 不匹配: "Sweet Potato Pie" ham 匹配: "green eggs&ham." "eggs ham" 匹配: "green eggs&ham."

标点符号被用来对搜索表达式和文档进行分词,但是在进行文本匹配的时候会被忽略。一个使用引号括起来的搜索的行为应该与如下操作在搜索表达式和目标笔记上都执行的效果一致:

所有XML标识都从文档中移除,只留下由可见字符组成的一个字符串 这个字符串被一个或多个空白字符和/或标点符号分割成一个单词列表 列表里面的每个单词的大小写被规范化 检索词中单词列表必须与笔记中转换后的具有相同顺序的单词列表进行匹配

例如,如果用户在下面这个 ENML 文档中搜索短语 "Spatula! City! For Bargains...":

该语法将搜索短语转换成规范化后的单词列表:

[ "spatula", "city", "for", "bargains" ]

笔记文档转换为: [ "come", "down", "to", "spatula", "city", "for", "bargains", "on", "spatulas" ]

该搜索将会匹配,因为从笔记文档中提取出来的单词列表中可以发现由目标短语转换后的单词列表。(同样的结果也可以通过其他方法实现,而不必将每条笔记逐字的转换成单词列表,但是它给了我们从主流搜索引擎如 Google 和 MS 上看到的预期的行为。)

匹配笔记核心属性

tag:[tag name] - 满足如下条件的笔记将会被匹配:拥有与指定名字(单词或者用引号括起来的短语)完全匹配的标签。这里不要求大小写完全匹配。指定的标签名字可以用通配符结束,以匹配某个标签的起始部分。该模式将从标签完整名字的开始进行匹配,标点符号也会被包含在内。即标签和搜索字符串不会被空白字符和/或标点符号分成单词列表。该表达式可以被多次使用以指定笔记必须匹配的所有标本。例如:

tag:cooking 匹配任何含有“cooking”标签的笔记 tag:cook* 匹配任何含有以“cook”开始的标签的笔记 -tag:cook* 匹配任何不含以“cook”开始的标签的笔记 tag:* 匹配含有至少一个标签的任何笔记 -tag:* 匹配所有没有标签的笔记

intitle:[literal] - 如果标题含有与指定的单词或者短语,该笔记将会被匹配。该语法在一个查询中可以多次使用。例如:

intitle:chicken 匹配标题中含有“chicken”单词的笔记 intitle:"tale of two" 如果标题含有“tale of two” 或者 “tale of two”, 甚至”Tale of , two“, 都将会被匹配 -intitle:beef 匹配标题里面不含“beef”单词的笔记

created:[datetime] - 如果笔记有一个与之相同或者比提供的时间离现在更近的“created”时间戳将会被匹配。(参考章节 C.2 获取关于合法日期格式的更多信息。) 例如:

created:20070704 基于客户端的时区设置, 匹配创建日期为2007年7月4号或者之后的笔记。 created:20070704T090000 基于客户端的时区设置, 匹配创建时间为2007年7月4号上午9点或者之后的笔记。 created:20070704T150000Z 匹配创建时间为GMT时间2007年7月4号下午3点或者之后的笔记。 -created:20070704 基于客户端的时区设置, 匹配创建时间早于2007年7月4号的笔记。 created:day-1 匹配昨天或者今天创建的笔记。 -created:day 匹配今天之前创建的笔记。 created:day-1 -created:day 只匹配昨天创建的笔记。 created:day-30 匹配最近30天内(含今天)创建的笔记。 created:week 本日历周内创建的笔记(周日-周六)。 -created:month 在本月之前创建的笔记。 created:year-1 匹配去年或者今天创建的笔记。

updated:[datetime] - 如果笔记有一个与之相同或者比提供的时间离现在更近的“updated”时间戳将会被匹配。(参考章节 C.2 获取关于合法日期格式的更多信息。)

resource:[MIME type string] - 如果笔记含有指定的 MIME 类型的资源将会被匹配,例如:

resource:image/gif 匹配的笔记至少含有一个 image/gif 类型的资源 resource:audio/* 匹配的笔记至少含有一个音频资源 -resource:image/* 匹配的笔记不含图片资源 resource:application/vnd.evernote.ink 匹配的笔记含有一个或者更多的 ink 资源 属性匹配

搜素表达式还可以包含用来匹配数据模型中定义的任何属性的检索词。这些属性定义在 Types.thrift 中的 NoteAttributs 和 ResourceAttributes 结构体里面。如果 NoteAtrtributes 含有指定名字的属性,将会根据笔记的属性进行匹配,否则如果存在指定名字的资源属性,则尝试根据资源的属性进行匹配。该匹配操作基于属性的类型来执行。

字符串属性使用上述标准的字符串匹配算法进行比较(大小写不敏感,规范化空白字符,参数结尾可选的通配符)。 Datetime attributes will be matched in the same manner as "created" and "updated", above. Datetime 属性会使用前面提到的 “created” 和 “updated” 中的方式来进行匹配。

布尔属性将根据参数的“true”和“false”进行比较。一个布尔属性如果设置了任何值都会匹配通配符(“*”)。

Double双精度值表达式将会匹配属性值大于等于指定参数的笔记(参考“latitude”例子)。Double 的比较是根据数值而不是字符来比较的,因此参数“99.9”小于“100”。Double 属性设置了任何值都会匹配通配符(“*”)。

subjectDate:[datetime] - 如果笔记的“subjectDate”属性等于或者晚于指定的 datetime 参数则被匹配。

latitude:[double] - 如果笔记设置了一个大于等于指定参数的“latitude”属性则被匹配。例如:

latitude:37 -latitude:38 如果笔记有 latitude 属性,并且值大于等于37,同时小于38,则被匹配。(即 37


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3