2013-07-22 54 views
2

我們有我們使大量過濾搜索1M行的分類數據庫。我們不做任何關鍵字搜索(沒有LIKEs或任何其他),我們所做的是根據標準(價格,房間數量,位置等)過濾行。Mysql的搜索與搜索工具(CloudSearch,獅身人面像,Solr的..)對於非文本搜索

由於我們沒有做關鍵字搜索,所以我質疑我們是否應該使用搜索服務器?

有什麼想法?

+0

也許這將有助於闡述爲什麼你甚至想到一個'搜索服務器'可能是一個有價值的投資。 – barryhunter

+0

,因爲在db服務器上會有很多搜索,我們不想在db中扼殺io。 – hakin

+0

所以真正的'要求'只是'卸載'一些請求。你可以通過建立一個從屬數據庫服務器來完成。 – barryhunter

回答

1

大多數搜索服務器不僅會搜索,而且還會比數據庫更快地過濾大量數據。因此,如果您需要更好的性能,請使用搜索服務器。

另一個要考慮的是開發成本:所有搜索服務器需要一些努力對其進行配置,並與系統相集成。

我有一些Sphinx的經驗,我喜歡它。現在我試圖將其實時索引與ORM集成,並避免任何數據庫過濾。 Sphinx將搜索和過濾數據,返回找到的ID,InnoDB只會通過ID選擇數據(MySQL和特別是InnoDB表格確實很快)。

只問自己:「數據庫性能對我們來說足夠了嗎?」並做出決定。

2

這是一個常見的MySQL的問題,因爲MySQL的全文搜索極差,並設有有限的幾個原因。幾乎所有您提到的搜索技術都會大大提高搜索功能,功能和速度。缺點是你必須維護一個單獨的系統,並保持索引同步,這可能是一個痛苦/昂貴/容易出錯。

這實際上是一個領域,PostgreSQL的真正的亮點,因爲它內置的搜索功能是廣泛的,高度可配置的,並且非常非常快。另外,可以使用簡單的數據庫觸發器來完成索引更新。

如果搜索是你的系統,一切您所搜索的很大一部分是在數據庫中,然後轉會到PG可能使很多更有意義比學習/維護一個專門的搜索引擎。