0

我正在开发一个具有自定义搜索功能的网站,我想收集有关用户搜索内容的统计信息。

它不是对网站内容的全文搜索,而是对具有以下搜索模式的公司进行搜索:

  • 按公司名称
  • 按区号
  • 通过提供的服务
  • ...

如何设计用于存储搜索统计信息的数据库?
哪些信息最相关,我应该如何查询它们?

4

3 回答 3

1

嗯,这取决于不同的搜索模式是如何工作的,但通常我会说一个有 3 列的表可以工作:

SearchType    SearchValue    Count

每当有人进行搜索时,假设他们搜索“Company Name: 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

等等。

于 2009-02-05T23:30:00.590 回答
1

这是一个非常普遍的问题,但这是我要做的:

选项 1 如果要严格区分所有三种搜索类型,请为每种类型创建一个表。对于公司名称,您可以简单地存储 CompanyID(假设您的网站正在维护公司列表)和搜索计数。对于区号,存储区号和搜索次数。如果区号不存在,请插入。提供的服务主要取决于您的设置。最通用的方法是存储关键字和搜索计数,如果还没有,则再次插入。

或者,您也可以存储搜索日期信息。例如,您将有一个包含提供服务关键字和唯一 ID 的表。您将拥有另一个表,该表具有该 ID 的 FK 和 SearchDate。这样,您可以随着时间的推移理解数据,同时最大限度地减少存储。

选项 2 对所有搜索一视同仁。一个包含关键字列和计数列的表,如果需要,可以合并 SearchDate。

于 2009-02-05T23:35:58.907 回答
0

你可能想检查一下:

http://www.microsoft.com/sqlserver/2005/en/us/express-starter-schemas.aspx

于 2009-02-05T23:22:04.270 回答