我有一个搜索功能在我的应用程序完成https://www.postgresql.org/docs/current/textsearch.html。我想加上拼写错误的更正,以"Did you mean…"的方式。"。
到目前为止,我已经看到你可以用https://www.postgresql.org/docs/current/pgtrgm.html得到单词的相似度。这和我想要的不太匹配,我想要的是一个对可能有缺陷的输入进行修正的建议。仅仅获得相似性就假设我已经知道正确拼写的单词是什么意思。
Postgres可以这样做吗?一个例子就是更正"Borritoh"";Burrito" .
只是获得相似性假设我已经知道正确拼写的单词是什么意思。
不,你只需要一本认识单词的字典。然后按相似度或距离排序已识别单词的字典,限制值为1。
如果您构建GiST风格的三元组索引,它将支持直接排序:
select word from dictionary ORDER BY word <-> 'Borritoh' limit 1
但是,如果所有被识别的单词都不相似,这将非常慢。最好使用%
来设置一个它不提供任何建议的下限(这可能会比使用GiST索引更好,您应该两种方法都尝试)。
select word from dictionary where word % 'Borritoh' ORDER BY word <-> 'Borritoh' limit 1