2013-07-19 105 views
2

的任務是在我的項目(PHP/Zend Framework 2 + MySQL)中實現MySQL中的文本搜索。問題是文本字段根本不大,主要是VARCHAR字段或加入的字段,如城市名稱,公司名稱等等,每個實體大約5-10個字段。 因此,目前我決定選擇Lucene(zend框架2模塊 - Zend搜索),但對於小型varchar字段使用像Lucene或Sphinx這樣的技術會有效嗎?mysql數據的文本搜索技術

謝謝。

+0

你在說多少數據?這是大規模的工具。 – Smandoli

+1

模塊/表格:它們是不同的,從5k到300k的記錄,並且歷史表格估計有幾百萬條記錄 – Cassius

回答

5

當然,Lucene或Sphinx可以使用任何包含文本的varchar列。*它們不必很大。

任何全文索引解決方案都比使用LIKE '%word%'好幾百或幾千倍!

您可能對我的演示文稿感興趣,Fulltext Search Throwdown

您還可以觀看我作爲網絡研討會發送該演示文稿的錄音:http://www.percona.com/webinars/2012-08-22-full-text-search-throwdown(它是免費的,但需要註冊)。

* Lucene和Sphinx可以用數字列做一些事情。 PS:我是Zend Framework 1.0的項目負責人。大約在2007年Zend_Search_Lucene是一個有趣的實驗,但相對於Apache Lucene/Solr而言,Zend_Search_Lucene的方式已經過時了,Zend_Search_Lucene比Java實現慢了幾個數量級。我不會爲此而煩惱。

+1

嗨,比爾。感謝您的評論和寶貴的介紹。我也期待使用/切換到percona服務器。 – Cassius

+0

@ Bill Karwin有一個很好的建議。我設計了PRWeb所擁有的搜索引擎,並且我們僅處理大約5000萬個文檔,但與使用RDBMS進行搜索相比,這是一個很大的改進。 *必要*區別是:搜索線程仍然受制於行,頁面和表鎖。因此,當您添加/更新/索引一系列行時,所有搜索都可能(最好)很快。這種爭用對於您的數據庫來說不是必需的,但會讓很多讀者爭用您的搜索表格。 –

+0

Percona是一個不錯的選擇,但我懷疑他們的顧問會建議您不要將RDBM與全文搜索結合起來,除非您的用戶羣非常小。 –