2012-10-30 335 views
0

我需要您的意見... 我正在開發一個應用程序在PHP & MYSQL(AZURE環境)。 我在MYSQL中爲應用程序編寫了一個搜索引擎。 搜索引擎應該對頁面進行索引。每個頁面都被「拆分」爲單詞,並且爲每個單詞創建一個包含該單詞出現的所有地址的表格。mysql搜索引擎

例如,如果客戶端查找單詞「tablet」,應用程序將訪問名爲「tablet」的表並提取表中的所有地址。 如果你正在搜索這兩個單詞,然後檢索所有地址兩個相關的表,並執行切割每個地址。

問題是至少有10 000個單詞,即10 000個表。 DATABASE中是否存在大量表的問題? 微軟雲服務器(AZURE)的使用是否改善了這種情況? 數據庫寫入是爲了分配雲中的表還是隻是讓它們生成,而云會照顧併爲我安排它們?

+4

你爲什麼要爲每個單詞創建一個表格? –

+0

你有一個單獨的表爲每個單詞?這似乎是一個非常低效的設計。 – andrewsi

+0

如果你有這樣一個奇怪的數據庫設計,你應該解釋你爲什麼選擇這個。 – NilsB

回答

0

您應該考慮爲您編制索引的解決方案。 Apache Lucene是他們http://lucene.apache.org/core/之一,如果你使用的是PHP,也有這種語言的實現以及(framework.zend.com)

我也建議使用獅身人面像搜索http://sphinxsearch.com。這是一個很棒的工具,可以爲你做索引。它將索引數據庫中的數據,並提供可以在ANSI SQL中查詢的接口。

+0

感謝所有迴應 我的目標多個表是縮短搜索時間。 1.無需真的看 - 我打開相關表格,並以最好的分數抽出1000個結果 1.我可以同時搜索字數 3.減少表格的大小。不需要在表中的每一行添加單詞 我讀過關於搜索引擎的內容。 起初,我想建立一個搜索引擎,然後我想讓搜索更直觀,例如,如果用戶寫道「我想擺脫我的車」,然後歸類爲「賣車」。 – user1786691

0

你在做什麼是複製倒排索引模式已經做了什麼。您應該查看Lucene(java)或lucene.net(.net)以獲得非常成熟的索引實現,該實現是開源的。

正如上面提到的,每個單詞(在lucene中稱爲術語)都有一張表是不可縮放的。