全文搜索(Postgres)与Elasticsearch的比较

23

阅读查询

在Posgres中,全文索引允许对文档进行预处理,并保存索引以便稍后进行快速搜索。预处理包括:

  • 将文档解析成标记。

  • 将标记转换为词元。

  • 存储针对搜索进行优化的预处理文档。


Postgres使用tsvector类型进行全文搜索

tsvector类型与下面的text类型有以下区别:

  • 消除大小写。大写和小写字母是相同的。

  • 删除停用词(and, or, not, she, him和数百个其他词)-因为这些词不相关于文本搜索。

  • 替换同义词并采用词干(将elephant -> eleph)。在全文目录中,它没有单词elephant,而是单词elep

  • 可以(也应该)使用GIST和GIN进行索引

  • 使用权重和ts_rank进行自定义排名


相较于Postgres全文搜索,Elasticsearch(搜索引擎)有什么优势?

1个回答

11

全文检索和Elasticsearch都建立在相同的基础技术倒排索引上,因此性能将大致相同。

全文检索更容易部署。

Elasticsearch带有Lucene,

如果您想要具有全文检索功能的Lucene,则需要额外付出努力。


不需要其他组件,但需要阅读和理解相当多的内容才能使用。 - Jasen
1
主要优势可能在于Elastic具有NoSQL数据库,而PostGres是OODBMS...例如:对于从多个数据源进行文本搜索...从多个数据源收集数据到NoSQL更有意义... - overexchange
NoSQL在模式设计上提供了灵活性。 - overexchange
是的,JSON文档(混合结构)也可以存储在PostgreSQL表的行中。https://www.postgresql.org/docs/10/datatype-json.html - Jasen
1
这个答案讨论了异构数据,其中MongoDB优于PostGreSQL。 - overexchange
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接