全文搜索中的模糊搜索

fuzzy search in full text search

我正在使用 postgresql 进行全文搜索,我发现如果有 misspellings.I 想要使用模糊搜索和全文搜索的示例,用户将不会收到结果 together.For 我不能结合 Trigram 索引和全文搜索。

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

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

CREATE EXTENSION IF NOT EXISTS fuzzystrmatch;

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

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

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

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

根据需求,我认为三元组相似度匹配更合适。

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

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

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

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

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