首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >模糊搜索和全文搜索究竟有什么不同?

模糊搜索和全文搜索究竟有什么不同?
EN

Stack Overflow用户
提问于 2020-02-25 15:09:38
回答 2查看 2.7K关注 0票数 2

在我的项目中,我被要求在我们使用的数据库中实现文本查询服务;Postgresql。我使用了Postgresql全文搜索特性,它的工作时间相当好。全文搜索的一个问题是,它没有模糊搜索能力。另一方面,还有一个名为pgtrgm的扩展,它提供了用于确定字母数字文本相似性的函数和操作符。还有几个使用pgtrgm进行文本搜索的示例,如:

代码语言:javascript
运行
复制
select actor
    from products
    where actor % 'tomy';

如你所知,postgres FTS的例子也在这里;

代码语言:javascript
运行
复制
SELECT title
FROM pgweb
WHERE to_tsvector(body) @@ to_tsquery('friend');

所以,主要的问题是,这两种搜索策略的区别是什么?哪一种方式更适合搜索文本?能把它们混合起来吗?我也需要说,表现也是一个重要的关注。提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-25 18:41:17

他们做的事情完全不同。它们之间唯一没有区别的地方是,它们对文本进行操作,并且可以从索引的使用中获益。从你的问题上看,你似乎已经有了很好的区别。合适的是做你想做的事的人。如果其中一个总是合适的,我们可能就不会创建另一个了。

您可以混合它们,但是每个索引都需要不同的索引,它们不能共享索引。另外,你可能也需要不同的表格,因为全文搜索更适合于句子或段落,而对单个单词或短句则更合适。

将它们混合的一种方法是有一张全文表,另一张表格只列出任何全文中的每一个不同的单词。第二个表可用于检测查询中可能出现的排字,然后,一旦通过trigram搜索中的建议对这些输入进行修正,则对第一个表运行固定查询。

票数 3
EN

Stack Overflow用户

发布于 2020-02-25 15:15:52

差别很大--在模糊搜索中,你在搜索一个类似的结果,在全文搜索中--完全相同。如果其中一种比另一种更合适,那就是用例问题。

如果您不需要模糊,不要使用它,这是一个巨大的性能开销,因为它必须与文本不完全匹配,但也尝试其他组合。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60397698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档