2009-02-05 46 views
0

我正在開發一個具有自定義搜索功能的網站,我想收集有關用戶搜索內容的統計信息。如何設計用於存儲和檢索搜索統計信息的數據庫表結構?

它不是一個完整的文本搜索網站的內容,而是爲企業與像搜索模式搜索:

  • 按公司名稱
  • 按區號
  • 所提供的服務
  • ...

如何設計數據庫以存儲有關搜索的統計信息?
什麼信息最相關,我應該如何查詢它們?

回答

1

嗯,這取決於如何在不同的搜索模式的工作方式,但一般來說,我會說,有3列的表將工作:

SearchType SearchValue Count 

每當有人進行搜索時,假設他們搜索「公司名稱:Initech」,首先查詢表中是否存在具有SearchType =「Company Name」的表中的任何行(或者您給出的任何枚舉/ ID值此搜索類型)和SearchValue =「Initech」。如果此行已經有一行,則通過遞增Count列來更新該行。如果此搜索沒有一行,則插入一個新的計數爲1的計數。

通過這樣做,您將在後期查詢時擁有相當大的靈活性。你可以找出每類最熱門的搜索是:

... ORDER BY Count DESC WHERE SearchType = 'Some Search Type' 

你可以找出最流行的搜索類型:

... GROUP BY SearchType ORDER BY SUM(Count) DESC 

等等

+0

這也是我的設計。我想知道是否有任何一種WWGD(谷歌會做什麼?)stlye添加到該設計。或者一些聰明的技巧。 – arturh 2009-02-05 23:38:01

1

這是一個相當普遍的問題但這裏是我會做的:

選項1 如果你想嚴格分離所有三個搜索ch類型,然後爲每個表創建一個表。對於公司名稱,您可以簡單地存儲CompanyID(假設您的網站正在維護公司列表)和搜索次數。對於區號,存儲區號和搜索次數。如果區號不存在,請插入它。提供的服務最依賴於您的設置。最常用的方法是存儲關鍵詞和搜索計數,如果還沒有,則再次插入。

或者,您也可以存儲搜索日期信息。作爲一個例子,你可以使用提供的服務關鍵字和唯一的ID。您將擁有另一個帶有FK的表格和一個SearchDate。這樣,您可以隨時間理解數據,同時最大限度地減少存儲空間。

選項2 對待所有搜索相同。一個包含關鍵字列和計數列的表格,如果需要,則包含SearchDate。

相關問題