2010-01-10 71 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條記錄似乎是問題(哈哈)。根據流量,數據庫可能不像您想象的那麼嚴重。