2012-09-18 35 views
0

我有一個包含書籍,作者和其他詳細信息的MYsql數據庫。PHP中的Mysql表索引

哪個索引引擎可以搜索它們?我想使用Sphider

它可以用於MySQL數據庫嗎?

+0

你想要做什麼樣的搜索?搜索到的數據是什麼樣的? –

+0

Sphider是爲蜘蛛網/索引網站,而不是數據庫。如果您通過一組結構化的網頁暴露了您的數據,那麼也許。 [閱讀文檔](http://www.sphider.eu/docs.php)。 – Orbling

+0

'Sphider'很適合爲自己的網站設置搜索引擎,但它不是作爲通用數據庫搜索引擎。你需要另外一個工具。 –

回答

2

解決方案1: 對包含要搜索的記錄的表使用MyISAM表引擎。然後,您可以在要搜索的列上創建索引,然後應用全文搜索功能。 http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

注意:使用MyISAM時,您將不具備事務功能,並且表可能會損壞(恢復困難)。另外,從MySQL 5.6.4開始,InnoDB擁有全文支持(儘管它是一個新功能,所以它可能會出錯並且基準仍然不夠)。

解決方案2: 使用Sphinx搜索服務器。它是超快速的分佈式搜索系統。獅身人面像將從你的MySQL數據庫中提取你想要索引的字段併爲它們編制索引。然後,您可以使用Sphinx SQL來獲取與您的查詢相匹配的文檔ID,或者使用Sphinx API(爲衆所周知的語言提供)來獲取匹配的文檔ID。 http://sphinxsearch.com/

當涉及到索引和查詢服務時,獅身人面像超快速。值得一看。我會推薦它。

+0

解決方案1意味着沒有交易,期限和易碎的表格可能會被破壞並證明難以恢復。這遠非理想。解決方案2更強大。 – tadman

+0

是的,這就是爲什麼我最後推薦獅身人面像。 BTW Innodb現在具有全文搜索功能。如果您使用的是MySQL 5.6.4(或最新的InnoDB),那麼您將獲得事務,強大的表格和極佳的恢復。 – Muhammad

+0

您應該修改答案以包含InnoDB索引功能。相比之下,使用MyISAM是超級黑客。 – tadman

2

如果你的所有數據已經​​在mysql數據庫中,那麼你不需要任何搜索/索引引擎。 使用PHP中的一個擴展來查詢mysql數據庫:MySQLi or PDO
閱讀擴展的文檔,瞭解如何使用這些功能。

然後,您將能夠編寫PHP/MySQL代碼來操縱數據庫中的數據。

+0

搜索引擎可以顯着提升搜索時的性能和智能。 – tadman