2011-02-09 225 views
1

我目前正在開發一個網站,該網站允許用戶上傳演示文稿,文檔和電子書(如scribd和slideshare),因此我需要能夠搜索文件的內容。我目前正在從txt文件中的文件中提取文本。 我正在考慮2個選項,因爲我使用的是MySQL:MySQL:搜索文件內容的最佳方式(全文搜索)

  1. 儲存在一個單獨的表和使用MySQL的全文索引,通過它來搜索純文本。
  2. 使用倒排索引來存儲單詞並在其中搜索。 (2個新表格 - 文檔表格中的文字和多對多文件)。現在,在這種情況下,我能做些什麼來重複與結果更相關的單詞。

該文本將僅用於搜索。 (1)的問題是電子書的文本可能很大,所以我認爲將其限制爲(例如)50kb或更少。 (2)在電子書中的大量詞語也存在問題,這些詞語可能受到限制。

所以,你能指導我尋找文本的最佳方法,並能夠快速全文搜索。在這種情況下,我需要充分利用mysql。

+1

你有沒有使用獅身人面像考慮(http://sphinxsearch.com/about/sphinx/) ?聽起來這很適合你的問題和技術堆棧。 –

+0

聽起來不錯,但我也有一個標記系統,我可以同時搜索兩者嗎?我的意思是,搜索標籤和文本,並根據全文的相關性和特定標籤的存在性對結果進行排序。 另外,我可以給獅身人面像的全文(一些txt文件大小超過200kb)?這是Sphinx處理的問題嗎?這種情況下的性能折衷是什麼?我的意思是,它值得嗎? – stormbreaker

回答

0

我決定使用Rob Di Marco建議的獅身人面像。事實證明,這是最快(也是開源)的FullText搜索引擎。編譯和獲取SphinxSE不會使mysql崩潰,所以我現在使用包含插件的MariaDB。

由於RealTime索引,我選擇了版本1.10。這意味着如果你只需添加一行,就不需要等待索引器重建整個索引。 (我知道的主+三角的解決方法,但是這是比較容易的方式來配置和使用SphinxQL使用)

又見Some questions related to SphinxSE and RT indexes