2014-02-20 8 views
0

У меня есть таблица MySQL, которая регистрирует условия поиска у каждого посетителя. Иногда это одно слово, и иногда это несколько слов. В моем конце я хочу перечислить наиболее популярные слова desc limit x.Самые популярные слова MYSQL

Конечно, я мог бы сделать это с PHP, но я хочу знать, возможно ли это также и с MySQL.

search_string 
-------------- 
Hotel in Berlin 
Paris 
New York 
Grand Hotel Principe 
Royal Myconian Resort Thalasso Spa 
Spa Resort 

Я знаю, что такие города, как Нью-Йорк, можно разделить на Нью-Йорк и Йорк, но игнорировать это.

Спасибо за помощь!

+1

использование полнотекстового поиска: https://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html – PravinS

+0

1. Откройте браузер, 2. перейдите на страницу google.com 3. выполните поиск mysql group по счету или что-то еще 4. Напишите код в соответствии с вашими результатами –

+0

Спасибо PravinS. Еще один вопрос к Элиасу и Джошуа. Делают ли комментарии репутацию или почему вы инвестируете время, чтобы написать бесполезные и оскорбительные ответы (Elias)? – BastianW

ответ

3

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

select word, count(*) as cnt 
from (select substring_index(substring_index(search_string, ' ', n.n), ' ', -1) as word 
     from searches s cross join 
      (select 1 as n union all select 2 union all select 3 union all select 4 union all select 5 
      ) n 
     where length(replace(search_string, ' ', ' x')) - length(search_string) <= n 
    ) w 
group by word 
order by cnt desc; 

Вложенные вызовы к substring_index() возвращению «энное» слово в списке. Предложение where подтверждает, что при запуске много слов в списке.

+0

Количество слов динамическое, но я буду работать с вашим решением. благодаря – BastianW

Смежные вопросы