2013-07-19 77 views
2

的任务是在我的项目(PHP/Zend Framework 2 + MySQL)中实现MySQL中的文本搜索。问题是文本字段根本不大,主要是VARCHAR字段或加入的字段,如城市名称,公司名称等等,每个实体大约5-10个字段。 因此,目前我决定选择Lucene(zend框架2模块 - Zend搜索),但对于小型varchar字段使用像Lucene或Sphinx这样的技术会有效吗?mysql数据的文本搜索技术

谢谢。

+0

你在说多少数据?这是大规模的工具。 – Smandoli

+1

模块/表格:它们是不同的,从5k到300k的记录,并且历史表格估计有几百万条记录 – Cassius

回答

5

当然,Lucene或Sphinx可以使用任何包含文本的varchar列。*它们不必很大。

任何全文索引解决方案都比使用LIKE '%word%'好几百或几千倍!

您可能对我的演示文稿感兴趣,Fulltext Search Throwdown

您还可以观看我作为网络研讨会发送该演示文稿的录音:http://www.percona.com/webinars/2012-08-22-full-text-search-throwdown(它是免费的,但需要注册)。

* Lucene和Sphinx可以用数字列做一些事情。 PS:我是Zend Framework 1.0的项目负责人。大约在2007年Zend_Search_Lucene是一个有趣的实验,但相对于Apache Lucene/Solr而言,Zend_Search_Lucene的方式已经过时了,Zend_Search_Lucene比Java实现慢了几个数量级。我不会为此而烦恼。

+1

嗨,比尔。感谢您的评论和宝贵的介绍。我也期待使用/切换到percona服务器。 – Cassius

+0

@ Bill Karwin有一个很好的建议。我设计了PRWeb所拥有的搜索引擎,并且我们仅处理大约5000万个文档,但与使用RDBMS进行搜索相比,这是一个很大的改进。 *必要*区别是:搜索线程仍然受制于行,页面和表锁。因此,当您添加/更新/索引一系列行时,所有搜索都可能(最好)很快。这种争用对于您的数据库来说不是必需的,但会让很多读者争用您的搜索表格。 –

+0

Percona是一个不错的选择,但我怀疑他们的顾问会建议您不要将RDBM与全文搜索结合起来,除非您的用户群非常小。 –