PostgreSQL和MySQL全文搜索

时间:2008-09-26 21:05:38

标签: mysql postgresql search full-text-search

PostgreSQL和MySQL的全文搜索系统如何比较?有没有明显优于奥德?它们以哪种方式不同?

6 个答案:

答案 0 :(得分:6)

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是文本字段。您可以专门为这些类型的搜索编制索引,当然它们可能比这个简单的示例更复杂。功能非常可靠,值得您做出决定。

祝你好运。

答案 1 :(得分:5)

不幸的是,我不熟悉PostgreSQL,但是如果你在MySQL中使用FULL TEXT搜索,你就会立即与MyISAM联系在一起。如果您想使用InnoDB(如果ACID合规性对您来说意味着什么,您应该使用InnoDB),那么您将无法使用其他解决方案。

经常推出的两个流行的替代品是Lucene(如果你使用的是PHP,那么带有Zend模块的apache项目)和Sphinx

答案 2 :(得分:2)

如果你使用Hibernate作为ORM我强烈建议使用Hibernate搜索。它建立在Lucene之上,所以它超级快。

卡尔

答案 3 :(得分:1)

我对postgresql / tsearch2有很好的经验,特别是因为它已经进入标准发行版(在8.0之前 - 我认为 - 它是一个可选的contrib功能,升级到tsearch2涉及一些工作)。

如果我没记错,你必须在启动之前设置一些属性(模糊匹配,字典内容),而在其他数据库上,这些东西通过全文语法本身灵活地暴露出来(我在考虑Oracle Text,虽然我知道这与你的问题无关。)

答案 4 :(得分:0)

我认为你可以将Sphinx与MySQL和Postgres一起使用。 这里是an article来解释如何将Sphinx与MySQL一起使用(您可以将其添加为插件)

答案 5 :(得分:0)

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

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

我使用过sphinxsearch。它非常快速且易于使用。但它并没有那么强大。我的意思是搜索功能。例如,它不支持'abc?',其中'?'代表任何角色。

我也知道lucene。它很强大,但很难学习。