Как спроектировать структуру таблицы базы данных для хранения и поиска статистики поиска? - PullRequest
0 голосов
/ 06 февраля 2009

Я занимаюсь разработкой веб-сайта с пользовательской функцией поиска и хочу собирать статистику о том, что ищут пользователи.

Это не полнотекстовый поиск контента сайта, а поиск компаний с такими режимами поиска, как:

  • по названию компании
  • по коду
  • предоставленными услугами
  • ...

Как спроектировать базу данных для хранения статистики о поисках?
Какая информация наиболее актуальна и как мне ее запрашивать?

Ответы [ 3 ]

1 голос
/ 06 февраля 2009

Ну, это зависит от того, как работают разные режимы поиска, но в целом я бы сказал, что будет работать таблица с 3 столбцами:

SearchType    SearchValue    Count

Всякий раз, когда кто-то выполняет поиск, скажем, что он ищет «Название компании: Initech», первый запрос, чтобы увидеть, есть ли какие-либо строки в таблице с SearchType = «Название компании» (или любое значение enum / id, которое вы дали этот тип поиска) и SearchValue = "Initech". Если для этого уже есть строка, обновите ее, увеличив столбец Count. Если для этого поиска еще нет строки, вставьте новую строку с числом 1.

Делая это, вы получите достаточную гибкость для последующих запросов. Вы можете выяснить, какие наиболее популярные запросы для каждого типа:

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

Вы можете определить наиболее популярные типы поиска:

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

1012 * Etc. *

1 голос
/ 06 февраля 2009

Это довольно общий вопрос, но вот что я бы сделал:

Вариант 1 Если вы хотите строго разделить все три типа поиска, то создайте таблицу для каждого. Что касается названия компании, вы можете просто сохранить CompanyID (при условии, что ваш сайт ведет список компаний) и количество запросов. Для кода города сохраните код города и количество запросов. Если код города не существует, вставьте его. Предоставляемые услуги в наибольшей степени зависят от ваших настроек. Наиболее общий способ - сохранить ключевые слова и количество запросов, снова вставив, если их там еще нет.

При желании вы также можете хранить информацию о дате поиска. Например, у вас есть таблица с ключевым словом предоставляемых услуг и уникальным идентификатором. У вас будет другая таблица с FK для этого идентификатора и SearchDate. Таким образом, вы сможете со временем разобраться в данных, сократив объем хранилища.

Вариант 2 Относитесь ко всем поискам одинаково. Одна таблица со столбцом ключевого слова и столбцом подсчета, включая при необходимости SearchDate.

0 голосов
/ 06 февраля 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...