如果PostgreSQL已在您的堆栈中,那么最好的选择是使用PostgreSQL全文搜索。
为什么要在PostgreSQL中进行全文本搜索(FTS)?
因为否则必须将数据库内容提供给外部搜索引擎。
外部搜索引擎(例如elasticsearch)非常快速但:
- 他们无法索引所有文档-可能是完全虚拟的
- 他们无权访问属性-没有复杂的查询
- 必须维护它们-DBA头疼
- 有时他们需要通过认证
- 它们不提供即时搜索(需要时间来下载新数据和重新编制索引)
- 它们不提供一致性-搜索结果已经从数据库中删除
如果您想了解有关PostgreSQL中FTS的更多信息,Oleg Bartunov会做一个很棒的演讲(我从这里提取了上面的列表):“ Do you need a Full-Text Search in PostgreSQL ?”
这是一个简短示例,说明如何从SQL的多个表中创建“文档”(阅读text search文档):
SELECT to_tsvector(posts.summary || ' ' || brands.name)
FROM posts
INNER JOIN brands ON (brand_id = brands.id);
如果您将Django用于电子商务网站,则还可以阅读我在“ Full-Text Search in Django with PostgreSQL”上写的这篇文章
,
简短答案: Elasticsearch更好
说明:
PostgreSQL和Elasticsearch是2种不同的数据库。 Elasticsearch具有强大的文档搜索功能,而PostgreSQL仍然是传统的RDBMS。检查您的目标,即您可能想搜索某些帖子中的文本。无论PostgreSQL在全文搜索中做得如何,Elasticsearch都可以搜索大量文本和文档(或记录)。而且,您可能想要搜索的大小越大,Elasticsearch的性能就比PostgreSQL更好。此外,如果在存储到Elasticsearch中之前将帖子预处理为几个字段和索引,则还可以获得很多好处和出色的性能。
如果您确实需要全文功能,则可以考虑使用MSSQL,它可能比PostgreSQL更好。
评论回复:比较那些不同类型的DB的属性应该是常识。由于OP没有提供存储的数据量和大小。如果这是小型搜索数据,则可以选择Postgre或ES都可以。但是,如果将来事务和数据存储库变得如此之大,ES将受益匪浅。
您可以检查this site来了解每种类型DB的当前排名,并在未来的应用程序需求,体系结构和数据增长中选择最佳的一种。
本文链接:https://www.f2er.com/3119853.html