2010-02-20 66 views
3

當我將搜索功能添加到我的第一個Rails應用程序時,我使用Sphinx,閱讀後認爲使用MySQL的內置全文搜索是一個壞主意。儘管Sphinx運行良好,但設置起來有點複雜,我覺得我的應用程序需要的簡單搜索功能有太多的重載。在Rails中MySQL全文搜索?

我的網站上不常執行搜索(每3-4秒最多搜索一次),所以我並不太擔心負載。

我的問題:與Sphinx/Ferret/Solr/etc相比,爲什麼正確使用MySQL的全文搜索是一個糟糕的主意?

回答

4

MySQL是一個關係數據庫,而不是一個搜索服務器,所以我們正在談論的是使用並非專門爲該任務構建的東西。這就是說,MySQL的全文搜索工作非常好;然而,如果您需要擴展,這並不好。

  1. 你不希望你的數據庫服務器做更多比它,因爲它通常是應用程序的瓶頸,即使沒有類似全文搜索的運行。
  2. 如果您關心數據的一致性,MySQL全文搜索要求您使用MyISAM引擎,這是一個問題。
  3. MyISAM不支持像InnoDB這樣的引擎支持的許多增強型數據驗證工具,所以您通常從MyISAM開始就處於劣勢。

但是,YMMV以及如果您的應用程序能夠承受MyISAM的缺點,請務必使用它。只要知道這對於MOST任務來說不是一個很好的生產引擎(不是所有,但大多數)。

+0

順便說一句,我沒有提到許多其他MyISAM與InnoDB項目,因爲我認爲這些都是衆所周知的,您可以通過Google獲取相關信息。 – 2010-12-07 19:41:29