PostgreSQL JSON中的全文搜索(无架构,类似NoSQL)

时间:2015-03-15 13:35:46

标签: mongodb postgresql full-text-search sphinx elasticsearch

我试图在PostgreSQL和MongoDB之间做出我正在做的项目,我需要一个无模式存储和一个全文搜索引擎。两个选项都涵盖了第一个选项,但我对第二个选项不太确定。

PostgreSQL是否能够在JSON数据中进行全文搜索,更具体地说,只能在JSON数据中的某些字段中进行全文搜索?

另外,哪一个对于全文搜索更精确,PostgreSQL中的内置搜索引擎还是MongoDB中的内置搜索引擎?或者我会更好地使用与Sphinx 或ElasticSearch 完全不同的东西?如果是第二个,它支持哪些数据库?

1 个答案:

答案 0 :(得分:2)

PostgreSQL的全文搜索功能适用于tsvector类型。基本上是:

  

PostgreSQL中的全文搜索基于匹配运算符@@,   如果tsvector(文档)匹配tsquery(查询)

,则返回true

因此,给定一个JSON字符串,要从中索引某些字段,您需要将这些字段导入tsvector类型的列,并使用外键将它们链接回内容。按照内置tsvector_update_trigger()的模型,通过触发器透明地实现它可能很方便。

从文本搜索引擎本身的角度来看,文本的来源(JSON字段或其他)是无关紧要的。该文件是tsvector