【发布时间】:2008-09-26 21:05:37
【问题描述】:
PostgreSQL 和 MySQL 的全文搜索系统如何比较?有没有明显比oder好?它们在哪些方面不同?
【问题讨论】:
标签: mysql postgresql search full-text-search
PostgreSQL 和 MySQL 的全文搜索系统如何比较?有没有明显比oder好?它们在哪些方面不同?
【问题讨论】:
标签: mysql postgresql search full-text-search
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 是一个文本字段。您可以专门为这些类型的搜索建立索引,当然它们可能比这个简单的示例更复杂。该功能非常可靠,值得您在做出决定时深入研究。
祝你好运。
【讨论】:
更新:从 MySQL 5.6 开始,InnoDB supports fulltext search
不幸的是,我并不精通 PostgreSQL,但如果您在 MySQL 中使用全文搜索,您会立即与 MyISAM 绑定。如果您想使用 InnoDB(并且如果 ACID 合规性对您来说意味着什么,那么您应该使用 InnoDB),那么您将无法使用其他解决方案。
经常推出的两个流行替代方案是 Lucene(如果您使用 PHP,则为带有 Zend 模块的 apache 项目)和 Sphinx。
【讨论】:
如果您使用 Hibernate 作为 ORM,我强烈建议您使用 Hibernate 搜索。它建立在 Lucene 之上,因此速度非常快。
卡尔
【讨论】:
我在使用 postgresql/tsearch2 方面有很好的经验,尤其是自从它被纳入标准发行版之后(在 8.0 版之前 - 我认为 - 这是一个可选的 contrib 功能,升级到 tsearch2 需要做一些工作)。
如果我没记错的话,你必须在启动之前设置一些属性(模糊匹配、字典的东西),而在其他数据库上,这些东西是通过全文语法本身灵活地公开的(我在这里想的是 Oracle Text,虽然我知道这与您的问题无关)。
【讨论】:
我认为您可以将 Sphinx 与 MySQL 和 Postgres 一起使用。 这里an article解释了如何使用Sphinx和MySQL(你可以将它添加为插件)
【讨论】:
Mysql全文搜索很慢。它无法处理超过 100 万的数据(每次查询几十秒)。
我没有使用 postgresql 全文搜索的经验。
我使用过 sphinxsearch。它非常快速且易于使用。但它不是那么强大。我的意思是搜索功能。例如,它不支持像'abc?',在哪里'?代表任何字符。
我也知道 lucene。它很强大,但很难学习。
【讨论】: