我正在使用PostgreSQL进行全文搜索,但发现拼写错误,用户将不会收到结果。我想同时使用模糊搜索和全文搜索,例如我无法将Trigram索引和全文结合在一起搜索。
在Postgres全文搜索中处理拼写错误的单词的最佳方法是什么?
答案 0 :(得分:0)
要使用模糊搜索,您需要确保存在扩展名。
CREATE EXTENSION IF NOT EXISTS fuzzystrmatch;
检查文档,但是您可以像这样应用搜索;
SELECT levenshtein('GUMBO', 'GAMBOL');
也许可以将结果放入一列中进行排序?您还应该调查“ regexp_replace”以修复某些已知的拼写错误
答案 1 :(得分:0)
我建议您使用全文搜索或三元组相似度匹配,但不要尝试将它们混用。
根据需求,我想说三元组相似度匹配更合适。
如果没有使用相似运算符%
得到结果,则有两种选择:
降低相似度阈值pg_trgm.similarity_threshold
。
以不同的方式查询,以使您获得最佳匹配,但是它们“相距较远”:
SELECT * FROM product ORDER BY katadi <-> ' pen' LIMIT 10;
我认为这将是更好的解决方案。