循序渐进 · 教学 · 搜索语法 Search syntax

在本体里,怎么写才算「查得到」

这一篇讲本体(Ontology)里搜索的语法,重点是正则(regex)查询:它能匹配什么、不能匹配什么、有哪些操作符。 学完你能写出既精确又不漏的查询串。

原文 Search syntax 预计阅读 10 分钟 互动演示 + 6 道测验
本文来源 · Source 内容整理自 Palantir Foundry 官方文档:
https://www.palantir.com/docs/foundry/ontology/search-syntax/
原始标题:Search syntax

一句话速览

在本体里,怎么写才算「查得到」:这一篇讲本体(Ontology)里搜索的语法,重点是正则(regex)查询:它能匹配什么、不能匹配什么、有哪些操作符。学完你能写出既精确又不漏的查询串。

1 在哪搜,以及这篇讲什么
你可以在本体的两个地方发起搜索:Workshop 里的 filter list(筛选列表)组件,或 Object Explorer…
2 属性要先被索引
正则搜索不是默认就能用的,原文给了明确前提
3 查询命中判断练习器
下面每个练习都给出字段的真实值和一条查询串
1

在哪搜,以及这篇讲什么

在 Workshop 的 filter list 或 Object Explorer 的搜索框里搜。

你可以在本体的两个地方发起搜索:Workshop 里的 filter list(筛选列表)组件, 或 Object Explorer 里的搜索框(search bar)

这一篇重点讲正则表达式(regex)搜索的语法。它的写法和常见的正则很像,但有几个关键差别—— 下面几节会逐条讲清,并用一个练习器让你亲手验证「这个查询到底命不命中」。

2

正则搜索的前提:属性要先被索引

字符串属性必须在 Ontology Manager 开启 regex 索引。

正则搜索不是默认就能用的,原文给了明确前提:

  • 字符串属性必须被索引以支持正则搜索
  • 开启方式:在本体管理器(Ontology Manager)里,进入该对象类型的 Properties 标签 → 选 Interaction 标签 → 勾选 Enable regex queries
别忘了这步:如果属性没开 regex 索引,你写再多正则也不会生效。先去 Ontology Manager 把开关打开。
3

三条铁律:和你想的不一样

整值匹配、不是子串、没有 ^ 和 $。

① 匹配的是「整个值」,不是子串
因为索引把整串当作一个未分词的完整值,模式总是从头到尾去比整个字段。搜 cat 只会命中正好等于 cat 的值,不会命中 concatenate。要做子串匹配,前后加 .*,例如 .*cat.*
^$ 锚点不支持
因为每次匹配都隐式从值开头到结尾,^$ 是多余的,不支持。
③ 想匹配字面量,用引号包起来
" 把一段变成「字面量分组」,里面的字符不再被当作正则操作符。例如 "v2.0" 只匹配字面的 v2.0;不加引号时 . 是通配符,可能误中 v2X0
4

支持的操作符

从通配到分组、字符集、转义,一表收尽。

操作符含义例子
.任意单个字符c.t → cat, cot, cut
?前一个字符可选(0 或 1 次)colou?r → color, colour
+前一个字符 1 次或多次go+d → god, good, goood(不含 gd)
*前一个字符 0 次或多次go*d → gd, god, good, goood
{}前一个字符重复次数区间go{2}d→good;go{2,}→≥2;go{2,4}d→2~4
|或(OR)cat|dog → cat 或 dog
()分组,让操作符作用于整组(un)?happy → happy, unhappy
[]字符集(单字符);- 表范围;^ 开头表否定gr[ae]y→gray,grey;[a-z];[^0-9]
"字面量分组"v2.0" → 仅字面 v2.0
\转义;并提供简写类\d 数字;\s 空白;\w 词字符;\. 字面点
转义简写举例:\d{3}-\d{4} 会匹配 555-1234800-5678 这种格式; \w+\s\w+ 会匹配「两个被空格分开的词」,如 hello world。要搜字面点,用 \.,如 example\.com
5

动手演示:查询命中判断练习器

给出字段真实值与查询串,先猜命中与否,再验证。

下面每个练习都给出字段的真实值和一条查询串。请先判断它能否命中 (记住三条铁律:整值匹配、^ $ 默认可省、"..." 表字面量),再点「会命中 / 不会命中」看结果。

动手试试 · 正则查询命中判断

说明:本练习器按原文规则实现了一个迷你正则引擎——模式默认按整值匹配,"..." 视为字面量, 其余采用标准正则语义。仅用于教学直观感受,不保证与平台内部实现逐字节一致。

6

常见示例速查

把高频写法直接抄走。

想匹配查询串
包含 cat 的任意值.*cat.*
color 或 colourcolou?r
good / goood(2~4 个 o)go{2,4}d
cat 或 dogcat|dog
gray 或 greygr[ae]y
字面 v2.0(点不通配)"v2.0"
形如 555-1234 的号码\d{3}-\d{4}
example.com(点不误中)example\.com

一页带走

① 先开索引
属性须在 Ontology Manager 开启 regex 查询。
② 整值匹配
模式比的是整个值,不是子串;子串用 .*….*。
③ 引号做字面
"…" 内不转义;. 等变字面量,防误匹配。
④ 操作符记牢
. ? + * {} | () [] " \ 各司其职。

延伸阅读 · 相关页面

按主题横向跳转,不必顺着目录一篇篇读。

常见问题速答 · FAQ

关于「在本体里,怎么写才算「查得到」」,读者最常问的几个问题。

在哪搜,以及这篇讲什么?
你可以在本体的两个地方发起搜索:Workshop 里的 filter list(筛选列表)组件,或 Object Explorer 里的搜索框(search bar)。
正则搜索的前提:属性要先被索引是什么?
正则搜索不是默认就能用的,原文给了明确前提。
动手演示:查询命中判断练习器是什么?
下面每个练习都给出字段的真实值和一条查询串。请先判断它能否命中 (记住三条铁律:整值匹配、^ $ 默认可省、"..." 表字面量),再点「会命中 / 不会命中」看结果。