Определите главные ключевые слова в поле таблицы MySql, используя php - PullRequest
1 голос
/ 18 ноября 2011

У меня есть таблица в MySql с несколькими различными полями, одно из которых содержит описание, которое может быть длиной в несколько параграфов.

Я пытаюсь найти способ, чтобы php автоматически прошел через эти поля описания и создал список самых популярных ключевых слов. Я ищу ключевые слова для всей таблицы, а не для каждого сообщения в отдельности.

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

Но я бы хотел получить такой список:

some x 121
most x 110
frequent x 90
words x 50

Чтобы я мог видеть, какие слова используются чаще всего в поле описания. Есть идеи, с чего начать?

Ответы [ 3 ]

4 голосов
/ 18 ноября 2011

Вы можете выполнить свой запрос,

  1. перебрать записи и добавить описания вместе в 1 большую счастливую строку.

  2. Затем выможно взорвать на '' в массив

  3. Получить массив значений с помощью array_count_values ​​()

  4. Пересортировать в порядке убывания arsort ()

Обновление

Пример кода тоже:

$string = '';
foreach (your_result_set as one_row) 
{
    $string .= $one_row['text'];
}

$data = explode(' ', $string);
$data = array_count_values($data);
arsort($data);
0 голосов
/ 18 ноября 2011

Есть несколько способов сделать это.Я предполагаю, что вы не хотите считать каждое слово, как слова, и, если, это и т.д. будут все бессмысленными.

также, сколько строк мы говорим?

простое решениесоздать и массив названных слов.цикл через каждый ряд.взорвать абзац, используя "", который дает вам каждое словоВы также можете сначала выполнить str_to_lower, если проблема связана с регистром.

переберите и используйте array_key_exists, чтобы увидеть, есть ли ключ, если он не создан.и добавьте значение одного.в противном случае увеличьте значение на единицу.

Это даст вам счет каждого слова.

, если это для поиска в большой базе данных, было бы целесообразно добавить ключевые слова в отдельную таблицу при вставке.один способ, который я думаю, это было бы хорошо, это добавить 5 наиболее часто используемых слов, исключая те из списка исключений (и, это, или, а, я и т. д.).и добавьте любое слово, которое появляется в таблице ключевых слов.

есть проблемы с этим.У меня есть этот ответ, и я не упоминаю php, sql или query, к которым относится пост. Возможно, стоит добавить теги / ключевые слова при вставке.

0 голосов
/ 18 ноября 2011

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

Триггер вставки будет проходить через new.description и увеличивать все найденные ключевые слова

Триггер удаления будет делать то же самое, но для old.description и уменьшать ключевые слова

Триггер обновления будет выполнять те же действия, что и удаление и вставка, то есть уменьшит все найденное в old.description и увеличит для new.description.

После того, как вы сделали и попробовали эти триггеры, сбросьте все данные и повторно импортируйте их, чтобы триггер выполнял работу со всеми существующими данными.

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