PostgreSQL和MySQL的全文搜索

8

PostgreSQL和MySQL的全文搜索系统有何区别?它们中有哪一个更好?它们在哪些方面不同?

6个回答

7

PostgreSQL 8.3内置全文搜索功能,是“tsearch2”的集成版本。

这里是文档:http://www.postgresql.org/docs/8.3/static/textsearch.html

以下是文档中的示例:

SELECT title
FROM pgweb
WHERE to_tsvector(body) @@ to_tsquery('friend');

其中body是一个文本字段。您可以专门为这些类型的搜索建立索引,当然它们可以变得比这个简单的示例更复杂。该功能非常稳定,值得深入研究,以便在做出决策时使用。

祝你好运。


开箱即用的全文搜索速度相当慢,务必彻底研究查询优化策略,否则您的用户体验将像28.8k调制解调器一样糟糕。 - boulder_ruby

5

更新:从MySQL 5.6开始,InnoDB支持全文搜索

很遗憾我不是PostgreSQL的专家,但如果您在MySQL中使用全文搜索,您将立即被绑定到MyISAM。如果您想要使用InnoDB(如果ACID合规性对您有任何意义,您应该使用InnoDB),则必须使用其他解决方案。

通常推出的两个受欢迎的替代方案是Lucene(如果您使用PHP,则为一个Zend模块的Apache项目)和Sphinx


7
从MySQL 5.6开始,InnoDB支持全文搜索。 - LaVache

2
如果你正在使用Hibernate作为ORM,我强烈建议使用Hibernate搜索。它是基于Lucene构建的,因此速度非常快。
卡尔

1

我在postgresql/tsearch2方面有着非常好的经验,特别是自从它被纳入标准发行版(在8.0版本之前 - 我想 - 它是一个可选的contrib功能,并且升级到tsearch2需要一些工作)。

如果我记得正确,你必须在启动之前设置一些属性(模糊匹配、字典等),而在其他数据库中,这些东西通过全文本语法本身灵活地暴露出来(我在想Oracle Text,在这里,尽管我知道这与你的问题无关)。


0

MySQL全文搜索非常慢。它无法处理超过100万条数据(每个查询需要几十秒)。

我没有使用postgresql全文搜索的经验。

我使用过sphinxsearch。它非常快速且易于使用。但它并不是非常强大。我的意思是,它不支持像“abc?”这样的搜索,其中“?”代表任意字符。

我也了解lucene。它很强大,但学习难度较大。


0

我认为你可以在MySQL和Postgres上都使用Sphinx。 这里有一篇文章讲解如何在MySQL中使用Sphinx(你可以将其作为插件添加)


Sphinx只能与MySQL配合使用,也就是说,它只支持从MySQL中获取数据。 - Timmmm

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