2008-09-26 66 views

回答

5

我很不熟悉PostgreSQL,但是如果你在MySQL中使用全文搜索,你会立即被绑定到MyISAM。如果你想使用InnoDB(并且如果ACID合规对你来说意味着什么,你应该使用InnoDB),你会被其他解决方案所困。

通常推出的两种流行替代方案是Lucene(如果您使用PHP,则为带有Zend模块的apache项目)和Sphinx

+3

对于现在读这个的人来说,从MySQL 5.6开始,InnoDB支持全文搜索。 – YeB 2015-11-01 07:02:17

0

我想你可以在MySQL和Postgres中使用Sphinx。 这里是an article解释如何使用狮身人面像与MySQL(你可以将其添加为一个插件)

+0

狮身人面像仅适用于MySQL。也就是说,它只支持从MySQL获取数据。 – Timmmm 2012-10-17 11:47:00

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'); 

凡身体是一个文本字段。您可以专门为这些类型的搜索索引,当然它们可能比这个简单的例子更复杂。功能非常扎实,值得您在做出决定时潜入。

祝你好运。

+0

开箱即用的全文搜索速度很慢,请务必彻底研究查询优化策略,否则您的UX将会像28.8k调制解调器一样糟糕。 – 2012-09-27 19:01:27

2

如果您使用Hibernate作为ORM,我强烈建议使用Hibernate搜索。它建立在Lucene之上,所以它的速度非常快。

卡尔

1

我已经在PostgreSQL /安装tsearch2相当不错的经验,特别是因为它卷成标准分布(8.0之前的版本 - 我认为 - 这是一个可选的contrib功能,并且升级到安装tsearch2参与一点工作)。

如果我记得正确的话,你必须在启动前设置一些属性(模糊匹配,字典的东西),而在其他数据库中,这些东西通过全文语法本身灵活地公开(我在考虑Oracle Text我知道这与你的问题无关)。

0

Mysql全文搜索很慢。它不能处理超过100万的数据(每个查询几十秒)。

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

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

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