カスタム検索機能を備えた Web サイトを開発しており、ユーザーが何を検索しているかに関する統計を収集したいと考えています。
Web サイトのコンテンツの全文検索ではなく、次のような検索モードで企業を検索します。
- 会社名で
- 市外局番で
- 提供サービスによる
- ...
検索に関する統計を保存するためのデータベースを設計する方法は?
どの情報が最も関連性が高く、どのように照会すればよいですか?
カスタム検索機能を備えた Web サイトを開発しており、ユーザーが何を検索しているかに関する統計を収集したいと考えています。
Web サイトのコンテンツの全文検索ではなく、次のような検索モードで企業を検索します。
検索に関する統計を保存するためのデータベースを設計する方法は?
どの情報が最も関連性が高く、どのように照会すればよいですか?
さまざまな検索モードがどのように機能するかによって異なりますが、一般的には、3列のテーブルが機能すると思います。
SearchType SearchValue Count
誰かが検索を行うときはいつでも、「会社名:Initech」を検索すると、最初にクエリを実行して、SearchType =「会社名」(またはこの検索タイプに指定した列挙型/ ID値)の行があるかどうかを確認します。 )およびSearchValue="Initech"。このための行がすでにある場合は、[カウント]列をインクリメントして行を更新します。この検索の行がまだない場合は、カウントが1の新しい行を挿入します。
これを行うことにより、後でクエリを実行するためのかなりの柔軟性が得られます。各タイプで最も人気のある検索は次のとおりです。
... ORDER BY Count DESC WHERE SearchType = 'Some Search Type'
最も人気のある検索タイプを把握できます。
... GROUP BY SearchType ORDER BY SUM(Count) DESC
等。
これはかなり一般的な質問ですが、これが私がすることです:
オプション13 つの検索タイプすべてを厳密に分離する場合は、それぞれのテーブルを作成します。会社名については、CompanyID(Webサイトが会社のリストを維持していると仮定)と検索数を保存するだけで済みます。市外局番の場合は、市外局番と検索数を保存します。市外局番が存在しない場合は挿入してください。提供されるサービスは、セットアップに最も依存します。最も一般的な方法は、キーワードと検索数を保存し、まだ存在しない場合は挿入することです。
オプションで、検索日情報も保存できます。例として、ProvidedServicesキーワードと一意のIDを持つテーブルがあります。そのIDへのFKとSearchDateを持つ別のテーブルがあります。そうすれば、ストレージを最小限に抑えながら、時間の経過とともにデータを理解することができます。
オプション2 すべての検索を同じように扱います。キーワード列とカウント列を備えた1つのテーブルで、必要に応じてSearchDateが組み込まれています。
あなたはこれをチェックしたいかもしれません:
http://www.microsoft.com/sqlserver/2005/en/us/express-starter-schemas.aspx