使用 RemNote 查询语言进行搜索
RemNote 查询语言用于描述您希望在 搜索传送门 中显示哪些 Rem。您可以使用多种标准,并且比使用标准搜索(例如,在 Ctrl+P 搜索或引用搜索中)时更加具体。
查询构建器
有两种编写查询的方式:直接输入文本,以及使用查询构建器,后者提供了一个用于设计查询的图形界面。您可以通过点击搜索传送门旁边的过滤器图标来打开查询构建器。

您可以随时在查询构建器和直接在文本框中编辑搜索查询之间来回切换。新用户应从查询构建器开始。
查询过滤器和运算符
查询构建器中的选项以粗体显示;手动编写查询时使用的语法以 等宽字体 显示。
连接
此处,SomeRem 表示使用 [[ 或 @ 插入到查询中的 Rem 引用。(如果您使用查询构建器,则无需输入 [[;当您点击右侧的下拉菜单时,引用搜索将自动开始,如上图中的 Cat。)
- 引用自 (
SomeRem): 匹配引用 SomeRem 的 Rem。 - 标记为 (
#SomeRem): 匹配标记为 SomeRem 的 Rem,以及标记为 SomeRem 所标记的任何 Rem 的 Rem(标签继承)。 - 直接标记为 (
!#SomeRem): 匹配直接标记为 SomeRem 的 Rem(无标签继承)。 - 包含的文档 (
@SomeRem): 匹配包含 SomeRem 的文档,无论是作为直接子项还是作为传送门。(包含对 SomeRem 的引用的文档不包括在内;如果您需要此行为,请尝试使用*SomeRem,如下所述。) - 在文档中 (
^SomeRem): 匹配当您打开文档 SomeRem 时可以看到的 Rem。这包括固定传送门中的 Rem,但不包括搜索传送门中的 Rem,并且不包括已折叠 Rem 的子项。 - 后代 (
^^SomeRem): 匹配 SomeRem 的直接后代的 Rem。这不包括传送门中的 Rem,但包括已折叠 Rem 的子项。 - 任何连接 (
*SomeRem): 匹配通过除父/子关系之外的任何类型的链接(引用、标签等)与 SomeRem 连接的 Rem。
其他
包含文本 (
"text"): 匹配包含引号内文本字符串的 Rem。- 出于性能原因,文本“包含”搜索的工作方式有些特殊。您通常可以将“包含”理解为“包含一个以搜索文本开头的单词”。
细节说明——仅当您在阅读上述内容后,在包含搜索中遇到意外行为时才需要阅读: RemNote 首先搜索所有包含以您输入的至少一个“包含”字符串开头的单词的 Rem。与“开头为”搜索相比,这匹配 Rem 中任何单词的开头,而不仅仅是整个 Rem 的开头。然后,如果您在同一搜索查询中有多个“包含”过滤器,RemNote 会再次遍历它在第一遍中找到的所有 Rem,并仅显示那些包含所有“包含”过滤器作为子字符串的 Rem;这次不需要锚定在单词的开头。
- 出于性能原因,文本“包含”搜索的工作方式有些特殊。您通常可以将“包含”理解为“包含一个以搜索文本开头的单词”。
Rem 类型 (
remType:concept,remType:descriptor,remType:none): 匹配是概念、描述符或两者都不是的 Rem。~: 波浪号是一个有效的表达式,它从不匹配任何内容。编写查询时,您可以将其用作稍后要插入的表达式的占位符。
布尔运算符
可以使用 and、or 和 not 将上述搜索项组合成表达式,并使用查询组(在可视化查询构建器中)或括号(在手动编写的查询中)进行分组。此处,X、Y 和 Z 代表上述列表中的连接或其他搜索项。
在手动编写的查询中,and 和 or 具有相同的优先级,并从左到右求值。not 的优先级高于两者。
X and Y: 匹配同时满足项 X 和 Y 的 Rem。X or Y: 匹配满足项 X 或项 Y,或同时满足两者的 Rem。not X: 匹配不满足项 X 的 Rem。X and (Y or Z): 匹配同时满足 X,并且满足 Y 或 Z 的 Rem。X and not Y or Z: 匹配满足 X 但不满足 Y 的 Rem;或 满足 Z 的 Rem,无论它们是否满足 X 或 Y。
