2012-01-03 21 views
5

我正在爲我的webapp使用MySQL數據庫。 我需要搜索多個表格&多列,它非常類似於在這些列內進行全文搜索。apache solr使用了多少額外的空間/ RAM/CPU?

我需要知道你在以下方面使用任何全文搜索API(如Solr的/ Lucene的/ MapReduce的/ Hadoop的等。)並且使用簡單的SQL的經驗:

  1. 速度性能
  2. 額外的空間使用率
  3. 額外的CPU使用率(被它不斷地建立索引?)
  4. 需要多長時間來建立索引,或者準備作什麼用?
  5. 請讓我知道你使用這些框架的經驗。

非常感謝!

+1

而不是編程相關的。 – 2012-01-03 09:15:42

+1

@Rosdi但我認爲,這個問題對應用程序設計以及您用於創建應用程序的工具和框架有所影響 – 2012-01-03 11:09:54

回答

8

回答您的問題

1)我有一輪500萬個文檔的數據庫。 MySQL全文搜索需要2-3分鐘。 Solr/Lucene需要進行大約200-400毫秒的相同搜索。

2.)您需要的空間取決於您的配置,複製字段的數量以及存儲數據或僅索引數據。在我的配置中,完整的數據庫被編入索引,但只有元數據被存儲。因此,一個30GB的DB需要40GB的Solr/Lucene。請記住,如果您想(重新)優化索引,則需要再次臨時指定100%的索引大小。 3.如果你從MySQL全文索引遷移到Lucene/Solr,你可以節省CPU電源。使用MySQL全文需要比Solr全文檢索更多的CPU功能 - >請看答案1.)

4.)取決於文檔數量,文檔大小和磁盤速度。當然,CPU性能非常重要。在索引時間內,多個CPU沒有很好的縮放比例。 2個大內核比8個小內核要快得多。 在我的環境中索引5百萬個文檔(44GB)需要2-3個小時的雙核VMware服務器。

5.)從MySQL全文索引遷移到Lucene/Solr Fulltextindex是有史以來最好的主意。 ;-)但是可能你必須重新設計你的應用程序。

//編輯來回答這個問題

這取決於你的Solr的配置「將Lucene索引立即得到一些Insert語句後更新」,但它有可能

+1

非常感謝,這真的非常有用:) – SmartSolution 2012-01-03 12:05:56

+0

要點和具體的描述。萬分感謝 – ChikuMiku 2016-07-18 17:28:10

3

Q1:Lucene的通常是在功能方面更快,更強大(如果正確實施)

Q2:如果你不存儲原始內容,它通常是20-30%的原始(索引)內容

問題4:取決於您要索引的內容大小,處理的數量(您可以擁有自己的分析器等),然後選擇硬件......您將必須做一個基準。對於我的一個項目,上一次花了15分鐘建立一個500MB的索引(開箱即用,沒有任何調整),另外一個項目花了3天時間建立一個巨大的17GB索引。

+0

感謝您的回覆,在我的項目中,基本上用戶應該上傳zip/tar文件,它會解析和這麼多的記錄將進入數據庫,所以我的問題是Lucene索引會在一些插入語句後立即更新,或者我們需要顯式觸發lucene重建索引,我的意思是索引是實時發生的嗎? – SmartSolution 2012-01-03 10:18:57

+0

Lucene是一個免費的文本搜索庫,僅此而已,它不知道關於關係數據庫,消息傳遞系統,無論你有什麼。您將使用API​​發送內容進行索引編制,然後再進行搜索。 – milan 2012-01-03 10:21:25