2010-01-10 38 views
1

我正在使用MySQL & ColdFusion。目前用于搜索TEXT字段,我在数据库中使用LIKE。幸运的是我的数据库是空的,但很快这个表就会填满,我担心我的LIKE SQL查询会杀死我的应用程序。MYSQL with Coldfusion - 创建搜索功能的解决方案?

我正在寻找一种解决方案,可以与MySQL & ColdFusion一起使用,这将允许我使用我的MySQL & ColdFusion应用程序提供搜索功能。

谢谢

+0

查看最近coldfusion标记的问题之一http://stackoverflow.com/questions/1998468/how-can-i-use-verity-to-index-and-search-database-content-in-coldfusion- 9 – Sergii 2010-01-10 20:30:52

回答

1

什么让你觉得这将是一个问题?你做过任何负载测试吗?桌子最大尺寸的最坏情况是什么?你是否填补了这个水平,并尝试过?最后,你是否真的需要它成为“文本”? MySQL有一些非常大的变种,会这样做吗?

我的观点是,这听起来像你已经有可能工作的最简单的解决方案。也许你应该证明在过度设计别的东西之前它不起作用?

最后,要真正回答您的问题,您可以将数据库缓存到真实搜索索引中,然后搜索(CF 9也提供了另一个索引引擎)。但是你会放松它作为一个实时搜索。

3

你很担心LIKE运算符的性能存在可伸缩性问题。但记住两件事。

第一张:如果您的column被索引,column LIKE 'pattern%'会很好地工作。它是column LIKE '%pattern%',可能会导致真正的性能问题。

其次,mySQL内置了一个很好的全文搜索系统。请参阅http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html

5

考虑在ColdFusion 9中使用ColdFusion的内置Verity搜索引擎或Solr搜索引擎,这是Apache Lucene。祝你好运!

更新:Coldfusion 9.0.1已经解决了Solr(apache lucene)搜索引擎中的几个怪癖。用它..!

1

我不知道它是否适用于您的应用程序,但我通常会为'%pattern%'预留用于由用户定义的高级搜索,当预期可能会出现性能下降时。如果可能,我将用户选择的搜索选项默认为“以...开始”。我在低流量网站上搜索了带有1.25百万条记录的MySql 5 DB中的'%pattern%'。数据库似乎不是瓶颈,即使在没有编入索引的领域。客户希望屏幕上显示的所有记录。显示超过10,000条记录似乎是问题(哈哈)。根据流量,数据库可能不像您想象的那么严重。