全文搜索中的模糊搜索

时间:2018-09-02 20:19:32

标签: postgresql full-text-search fuzzy-search trigram misspelling

我正在使用PostgreSQL进行全文搜索,但发现拼写错误,用户将不会收到结果。我想同时使用模糊搜索和全文搜索,例如我无法将Trigram索引和全文结合在一起搜索。

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

2 个答案:

答案 0 :(得分:0)

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

CREATE EXTENSION IF NOT EXISTS fuzzystrmatch;

检查文档,但是您可以像这样应用搜索;

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

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

答案 1 :(得分:0)

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

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

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

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

  2. 以不同的方式查询,以使您获得最佳匹配,但是它们“相距较远”:

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

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