2012-07-04 81 views
1

我正在爲我的網站搜索表單/腳本。MYSQL和PHP搜索腳本與單詞列表和鏈接

一開始在內容中使用我的網站上的每一個字被存儲在一個MySQL表稱爲words,它看起來是這樣的:

id | word | title_count | content_count | article_count | photo_count | video_count | 
---+-------+-------------+---------------+---------------+-------------+-------------+ 
1 | hello |   3 |    1 |    0 |   1 |   0 | 
2 | what |   1 |    4 |    1 |   0 |   0 | 

wordid領域是獨一無二的,字段title_countcontent_count用於存儲單詞在標題或主要內容中使用了多少次。 其他_count字段只是說在文章/照片/視頻中該詞用了多少次。

我不確定所有這些計數字段對搜索功能是否有用,但認爲它可能會派上用場。

然後我有多個鏈接表到所有words表的_count領域看起來像這樣:

id | word_id | 
---+----------+ 
43 |  2 | 
7 |  1 | 
7 |  2 | 

這些表被稱爲:word_link_titleword_link_contentword_link_articleword_link_photoword_link_videoid場存儲它鏈接到的文章/照片/視頻的ID,word_id存儲鏈接的單詞的ID。

現在我已經完成了所有設置,我有點卡住了。我並不清楚如何根據所有這些數字和研究術語來梳理相關內容。

我打算做的事情是帶有多個選項卡的搜索結果頁面,其中一個會顯示搜索的所有結果,然後在其他選項卡中它將在文章/照片/視頻中分開。

我不知道如果我真的在正確的道路上得到的東西工作。希望有人可以幫助我..

+0

你有沒有看過使用MySQL的全文搜索?它基本上是你在這裏試圖做的更高級的版本。 http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html –

+0

@SamDufel我不確定這真的能解決問題嗎?我認爲他正在尋找如何使用建立多對多關係的第三個表將元數據加入資產。我相信他正走在正確的道路上。也許我只是不理解你如何建議應用全文搜索來允許搜索分類結果。 – shaunhusain

+0

IMO,爲要查詢的每個表(文章,內容,視頻等)添加全文索引要簡單得多。結果可以通過聯合或者一些php連接/分割。使用mysql的優點是它*已經*具有強調不太常用的單詞的邏輯,並且帶有一個標準的停用詞表。你基本上是用這樣的系統重新發明輪子,並且當你嘗試手動維護搜索詞索引表時,會增加一些嚴重的麻煩。 –

回答

0

這一切都取決於你想要什麼,如果你想建議的結果,你可能想看看一些着名的詞搜索算法:Jaro-Winkler是好的短詞和Levenshtein是短的好長文本中的單詞。 您也可以使用PHP的similar_text函數來更好地匹配這些先前的算法。

我發佈了一堆搜索腳本here(Jaro-Winkler)和here當我建立一個搜索引擎項目,如果你想檢查出來。

至於不同的計數,爲什麼不呢?您可以使用出現次數來支持某些關鍵字。但小心哪些你插入到你的數據庫!你不希望像'the','it'或任何其他常見詞語一樣會破壞所有這些。

編輯:當然,這意味着搜索將在PHP中,並將有一個巨大的不便,需要從數據庫中選擇大量的關鍵字(如果不是全部)。最終估計搜索時間爲0.04秒,數據庫超過3000個字。所以它似乎確定=)