Как я могу создать упорядоченный список наиболее распространенных подстрок внутри моей колонки MySQL varchar? - PullRequest
0 голосов
/ 30 октября 2008

У меня есть таблица базы данных MySQL с несколькими тысячами строк. Таблица настроена так:

id | text

Столбец id представляет собой автоинкрементное целое число, а столбец text представляет собой 200-символьный вариант.

Скажите, у меня есть следующие строки:

3 | I think I'll have duck tonight

4 | Maybe the chicken will be alright

5 | I have a pet duck now, awesome!

6 | I love duck

Тогда список, который я хочу создать, может выглядеть примерно так:

  • 3 случая «утки»
  • 3 вхождения 'I'
  • 2 вхождения 'have'
  • 1 вхождение 'курица'
  • .etc .etc

Кроме того, я, вероятно, захочу сохранить список подстрок, которые следует игнорировать из списка, например, «I», «will» и «have». Важно отметить, что я не знаю, что люди будут публиковать.

У меня нет списка слов, которые я хочу отслеживать, я просто хочу найти наиболее распространенные подстроки. Затем я отфильтрую любые ошибочные подстроки, которые не интересны, из списка вручную, отредактировав запрос.

Кто-нибудь может предложить лучший способ сделать это? Спасибо всем!

Ответы [ 3 ]

2 голосов
/ 30 октября 2008

MySQL уже делает это для вас.

Сначала убедитесь, что ваш стол является таблицей MyISAM

Определение индекса FULLTEXT для вашего столбца

В командной строке оболочки перейдите в папку, где хранятся ваши данные MySQL, затем введите:

myisam_ftdump -c yourtablename 1 >wordfreq.dump

Затем вы можете обработать wordfreq.dump, чтобы удалить ненужные столбцы и отсортировать их по убыванию частоты.

Вы можете сделать все вышеперечисленное с помощью одной командной строки и некоторого волшебства sed / awk, без сомнения. И вы можете включить его в свою программу без необходимости создания файла дампа.

Подробнее о myisam_ftdump здесь: http://dev.mysql.com/doc/refman/5.0/en/myisam-ftdump.html

О ... еще одна вещь, стоп-слова для MySQL предварительно скомпилированы в движок. И слова с 3 или менее символами не индексируются. Полный список здесь:

http://dev.mysql.com/doc/refman/5.0/en/fulltext-stopwords.html

Если этот список не подходит для ваших нужд или вам нужны слова, содержащие не более 3 символов, единственный способ - перекомпилировать MySQL с другими правилами для FULLTEXT. Я не рекомендую это!

0 голосов
/ 30 октября 2008

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

0 голосов
/ 30 октября 2008

Извлеките в плоский файл, а затем используйте ваш любимый быстрый язык, perl, python, ruby ​​и т. Д. Для обработки плоского файла.

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

Некоторые задачи с базами данных намного проще выполнять вне базы данных.

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