我正在使用MySQL& ColdFusion的。目前,我正在搜索TEXT字段,我在数据库中使用LIKE。幸运的是我的数据库是空的,但很快桌子就会填满,我担心我的LIKE SQL查询会杀死我的应用程序。
我正在寻找适用于MySQL和Linux的解决方案ColdFusion将允许我通过我的MySQL& amp; scrandbly提供搜索功能。 ColdFusion app。
由于
答案 0 :(得分:5)
考虑使用ColdFusion内置的Verity搜索引擎或ColdFusion 9中的Solr搜索引擎,即Apache Lucene。祝你好运!
更新:Coldfusion 9.0.1解决了Solr(apache lucene)搜索引擎中的几个问题。使用它..!
答案 1 :(得分:3)
您可能会担心LIKE运算符的性能存在可伸缩性问题。但请牢记两件事。
首先:如果您的column LIKE 'pattern%'
被编入索引,column
效果很好。它是column LIKE '%pattern%'
,可能会导致真正的性能问题。
其次,mySQL内置了一个很好的全文搜索系统。见http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html
答案 2 :(得分:1)
什么让你觉得这会有问题?你做过任何负载测试吗?表的最大情况是什么?你把它填充到那个级别并尝试过吗?最后,你真的需要它成为“文本”吗? MySQL有一些非常大的varchars,那会改为吗?
我的观点是,听起来你已经拥有了可能有效的最简单的解决方案。也许你应该在过度设计其他东西之前证明它不起作用?
最后,要真正回答你的问题,你可以将数据库缓存到一个真实的搜索索引,然后搜索(CF 9也提供另一个索引引擎)。但是,你将把它作为一个实时搜索。
答案 3 :(得分:1)
我不知道它是否适合您的应用,但我通常会为预期性能下降时用户定义的高级搜索保留'%pattern%'。如果可能,我将用户选择的搜索选项默认为“Starts With”。我在MySql 5数据库中搜索了'%pattern%',在低流量站点上记录了125万条记录。即使在未编制索引的字段上,数据库似乎也不是瓶颈。客户想要屏幕上显示的所有记录。显示10,000多条记录似乎是问题(笑)。根据流量,数据库可能不像您想象的那么严重。