在PostgreSQL中,"<->"的用途是什么?

5

我正在阅读PostgreSQL 9.3文档中关于物化视图的内容,并遇到了以下例子,该例子是为了参考拼写检查单词而给出的:

SELECT word FROM words ORDER BY word <-> 'caterpiler' LIMIT 10;

我尝试搜索了Google和StackOverflow,但是标点符号被过滤掉了,所以我无法理解它指的是什么。有人能解释一下它是如何使用以及用于什么吗?另外,可以给我一个链接,让我能够详细了解它的用法吗?

5
SELECT * FROM pg_operator where oprname = '<->' ; - joop
3个回答

4
根据http://www.postgresql.org/docs/9.1/static/pgtrgm.html,此运算符<->返回字符串之间的编辑距离。

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

因此,整个查询是为了找到与单词“caterpiler”在编辑距离方面最相似的10个单词。

1

这是用于查找两个几何图形之间距离的运算符(请参见文档)。此外,根据该文档,它也是字符串之间的“距离”(Levenshtein's? 该文档没有明确说明):

text <-> text 返回参数之间的“距离”,即相似性()值减去一。


我很确定在字符串操作中是使用编辑距离(edit distance)。这里有一个示例:点击这里 还值得注意的是,楼主提到了源自PostgreSQL文档。 - Conrad Frix
这不是一个错误,而是一个有效的用法:http://www.postgresql.org/docs/9.1/static/pgtrgm.html - lejlot
你们说得对。我修正了我的回答,但应该把@lejlot的回答选为被采纳的答案。 - Óscar López

0

这是“距离”运算符,但它只记录几何类型(点、形状等)的操作数。

经过一些字符串实验,它似乎返回 levenstein距离的函数:

  • 'abc' <-> 'abc' --> 0
  • 'abc' <-> 'abcd' --> 0.5
  • 'abc' <-> 'abd' --> 0.6666

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接