2

我正在使用 postgresql 进行全文搜索,我发现如果有拼写错误,用户将不会收到结果。我想同时使用模糊搜索和全文搜索。例如,我无法结合三元组索引和全文搜索。

在 Postgres 全文搜索中处理拼写错误的单词的最佳方法是什么?

4

2 回答 2

1

我建议您使用全文搜索或三元相似度匹配,但不要尝试混合使用它们。

根据要求,我会说三元相似度匹配更合适。

如果使用相似性运算符没有得到结果%,您有两种选择:

  1. 降低相似度阈值pg_trgm.similarity_threshold

  2. 以不同的方式查询,以便获得最佳匹配,但它们是“遥远的”:

    SELECT * FROM product ORDER BY katadi <-> ' pen' LIMIT 10;
    

    我认为这将是更好的解决方案。

于 2018-09-03T08:42:44.207 回答
0

要使用模糊搜索,您需要确保扩展名存在。

CREATE EXTENSION IF NOT EXISTS fuzzystrmatch;

检查文档,但您应用搜索:

SELECT levenshtein('GUMBO', 'GAMBOL');

您可以将结果放入列中以进行排序吗?您还应该调查“regexp_replace”以修复一些已知的拼写错误

于 2018-09-02T22:33:47.717 回答