我试图在PostgreSQL和MongoDB之间做出我正在做的项目,我需要一个无模式存储和一个全文搜索引擎。两个选项都涵盖了第一个选项,但我对第二个选项不太确定。
PostgreSQL是否能够在JSON数据中进行全文搜索,更具体地说,只能在JSON数据中的某些字段中进行全文搜索?
另外,哪一个对于全文搜索更精确,PostgreSQL中的内置搜索引擎还是MongoDB中的内置搜索引擎?或者我会更好地使用与Sphinx 或ElasticSearch 完全不同的东西?如果是第二个,它支持哪些数据库?
答案 0 :(得分:2)
PostgreSQL的全文搜索功能适用于tsvector
类型。基本上是:
PostgreSQL中的全文搜索基于匹配运算符@@, 如果tsvector(文档)匹配tsquery(查询)
,则返回true
因此,给定一个JSON字符串,要从中索引某些字段,您需要将这些字段导入tsvector
类型的列,并使用外键将它们链接回内容。按照内置tsvector_update_trigger()
的模型,通过触发器透明地实现它可能很方便。
从文本搜索引擎本身的角度来看,文本的来源(JSON字段或其他)是无关紧要的。该文件是tsvector
。