Postgres选择具有百分比匹配的行,并按百分比排序

时间:2015-07-04 20:18:31

标签: sql postgresql

我在postgres数据库中有一个句子表。该表名为sentences,存储每行句子的列称为sentence

如何将句子与给定句子进行比较并返回其中60%的单词(甚至更好的单词根)匹配的句子,然后根据匹配的质量对结果进行排序?

理想情况下,在70%匹配之前会有90%匹配,而50%的匹配根本不会显示。

理想情况下,它也会排除标点符号,但这不是必需的。

1 个答案:

答案 0 :(得分:2)

查看fuzzystrmatch模块,尤其是levenshtein功能。这计算两个字符串之间的“距离”,较低的值意味着它们更相似。它通常用在两个单词之间,但只要句子不太长(每个参数的最大字符串长度为255个字节),你也可以将它们与句子一起使用。

然后你会按levenshtein函数的升序输出排序,结果从大多数到最不相似。

如果要排除标点符号,请使用正则表达式对字符串调用regexp_replace以删除所需的所有字符,将其替换为空字符串,并将这些返回值用作levenshtein的参数