2009-10-29 134 views
0

從MySQL表中生成超級相關結果的最佳方式是什麼?我有一個包含標題,說明和標籤的表格中的網站列表。我怎樣才能建立一個SELECT查詢/搜索功能在PHP會發現在所有這三個欄的用戶輸入的關鍵字,並同時保持儘可能快牢記以下幾點:在標題MySQL表中的相關搜索結果

  • 比賽會是最相關的,但標題和描述顯然匹配/標籤會更加相關
  • 匹配的標籤將是第二個最相關的
  • 關鍵字可以按任意順序
  • 不要求相匹配但如果所有的關鍵字不匹配,它可以匹配任何一個(我不知道這是否會導致呼叫速度太慢)

是否有我需要讓我的桌前的任何具體修改?

回答

0

最簡單的方法是在所有這些列上使用full-text index

然而,在MySQL全文索引不會給你在不同的列加權細粒度控制。對於您需要像lucenesphinx

0

沒有簡單的答案。 「儘可能快地」並不是一個限制。你必須: 1)設定真正的目標 2)嘗試自己實現它

可能發生的最簡單的查詢很好地工作,你不必做任何事情。

順序總是寫工作代碼,嘗試一下,如果它不運行良好優化。你這樣做是相反的,因此浪費你的時間。

-2

自然的做法恕我直言,將通過記錄讓PHP舉動,讓您可以通過記錄應用邏輯記錄。

你可以期望你要細化,未來你的邏輯。通過代碼處理您的需求可以讓您輕鬆完成任務。

不能說你的表結構,因爲你沒有提供太多的細節。

+0

「自然的方法恕我直言將讓PHP移動通過記錄集,所以你可以通過記錄應用邏輯記錄。」 這絕對不是一個好方法。你失去了查詢緩存,你將所有的數據從數據庫轉移到每個頁面刷新刷新/無論觸發查詢。 – kubal5003 2009-10-29 21:27:53

+0

當然,你失去了緩存。爲了某些目的,這是可以的。通常不是。一個常見的解決方案是製作一個「結果」表。該表必須包含會話ID的額外字段,因此每個最終用戶的結果是分開的。它很笨拙,但這就是HTTP的本質。使用算法的好處很大,這是一種非常普遍的方法。 – Smandoli 2009-10-30 14:45:17