2009-07-26 2 views
3

Когда кто-то ищет свой сайт, используя функцию быстрого поиска, я хотел бы войти это в моей базе данныхКак мне выполнить поиск на моем PHP/MySQL сайте?

  1. Очевидно, что я хочу видеть, что мои пользователи ищут
  2. Я могу создать «облако тегов» на основе на этих поисков

у меня есть таблица searchterms на данный момент с двумя полями: id и terms, мне было интересно, если это лучший способ регистрации этой информации. Однако Terms становится немного избыточным.

любые подсказки или ссылки на соответствующие сценарии?

Спасибо, ребята

+0

оба полезных ответа, но я сначала займусь анализом Google. Я делаю все, чтобы минимизировать нагрузку на сервер! – bluedaniel

ответ

2

Я не пробовал, но Google Analytics предоставляет возможность отслеживать, что пользователи вводят в вашем окне поиска. Для отображения есть API-интерфейс разработчика.

Предостережение: все это будет javascript. Преимущество заключается в том, что это уменьшит нагрузку на сервер.

Возможно, не то, что вы искали, но стоит упомянуть.

+0

Это действительно хорошее решение для данной проблемы. –

3

насчет таблицы, чтобы сохранить условия (возможно, в какой-то «нормализованным» способом, как и все в нижнем регистре, не акцентами, ...), а также другую таблицу для хранения, когда были найдены эти термины для ?

Нормализация заключается в том, чтобы избежать «слова» и «слова», которые рассматриваются как два разных термина в вашей возможности; то же самое для «éléphant» и «слона», кстати.

terms 
    - id 
    - word 

terms_searched 
    #id _term 
    - time_search 

Тогда, зная последний поиск терминов, или наиболее искали условия, это просто вопрос простого запроса SQL, как

select id, term, count(*) 
from terms 
    inner join terms_searched on terms_searched.id_term = terms.id 

может быть, с где предложение указать вы только хотите последние поиски должны быть приняты во внимание?

И если ваши таблицы становятся действительно большой и присоединиться в запросе начинает болеть выступления, вы можете предусмотреть денормализация, положив «num_times_searched» в таблице терминов, что подводит итог, сколько раз термин был искал