Postgres <-> 运算符有什么作用?

Vil*_*uss 10 postgresql operator

我正在阅读有关物化视图Postgres 文档,在一个示例中,他们使用以下内容:

SELECT word FROM words ORDER BY word <-> 'caterpiler' LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

我试图在我自己的数据库上运行类似的查询,但出现错误。

[42883] ERROR: operator does not exist: character varying <-> unknown
Run Code Online (Sandbox Code Playgroud)

我(可能)不需要使用运算符,但我只是好奇它的作用。

注意事项

  • 我正在运行与文档相同的版本(9.3)
  • 我确实尝试过谷歌搜索这个问题,但<->即使你用引号将它括起来,谷歌也会忽略它。

Erw*_*ter 13

它应该是来自附加模块pg_trgm的“距离”运算符。

手册:

text <-> text real 返回参数之间的“距离”,即 1 减去similarity()值。

该模块必须安装(每个数据库一次):

CREATE EXTENSION pg_trgm;
Run Code Online (Sandbox Code Playgroud)

更多细节:

从理论上讲,任何具有必要权限的用户都可以使用该操作员名称创建一个操作员CREATE OPERATOR- 但在您链接到的示例中则不然。