2012-07-28 57 views
3

我的數據庫包含數以千萬計的產品,所以我需要一種高效的搜索技術來加快我的響應速度。最初,我嘗試根據字母或查詢的一些初始字符製作大量表格。然而,這多次失敗,例如如果用戶搜索「ipod touch」而不是「apple ipod touch」。我可以使用trie或其他數據結構來實現這個嗎? Google如何跟蹤這麼多數據?爲我的網站製作高效的搜索引擎

+0

我的網站目前緩慢的狀態可以在這裏看到http://compare.buyhatke.com – 2012-07-28 05:48:12

+0

好的網站。你如何獲得這些內容?您是使用API​​還是從網站上獲取內容? – 2012-07-28 05:58:04

+1

當你「問些大問題」時,好的選民就不會-1。良好的選民-1低質量的問題,沒有努力或不清楚。 – 2012-07-28 07:12:34

回答

2

您需要的是全文搜索。您可以嘗試在MySQL中使用FULLTEXT索引並執行MATCH AGAINST查詢。

但我認爲你將會有更好的運氣與Apache Solr。它速度快,可擴展並提供更好(相關)的結果。

+0

我完全不知道這個Apache Solr。你可以告訴我一兩行,它可以集成在MySQL數據庫和PHP之間。另外,如果您對網站有一些建議,請提一下 – 2012-07-28 07:30:28

+0

Solr是一個單獨的搜索索引。你將不得不單獨更新它。 MySQL有一個dataimport處理程序,它允許你直接從你的數據庫導入數據。 – 2012-07-28 10:21:47

5

製作自己的搜索算法很困難。當我不得不爲某個項目做類似的事情時,我只是逐列地瀏覽整個數據庫,搜索所有內容,然後搜索任何條款;它是粗糙的,但它的工作原理是因爲數據庫永遠不會實際擁有超過一萬個條目。考慮到數據庫的大小,您最好查看一些預製的搜索引擎:這些內容的編寫和優化都非常好。正如喬伊斯巴布所說,Apache Solr是一個;我想提出的另一個建議是Sphinx。這是(根據維基百科)在craigslist上使用,它每天服務2億次;這種權力應該足以應付你想要的東西。

+0

感謝您的建議。如果有任何疑問,我會通過他們發佈 – 2012-07-28 07:31:49