Нужен скрипт PHP MySQL для поиска ключевых слов в базе данных - PullRequest
0 голосов
/ 17 мая 2011

Мне нужно реализовать опцию поиска для комментариев пользователей, которые хранятся в базе данных MySQL.Я бы оптимально хотел, чтобы он работал аналогично стандартной поисковой системе веб-страниц, но я стараюсь избегать крупномасштабных решений.Я хотел бы просто почувствовать запросы, которые дали бы мне достойные результаты.Какие-либо предложения?Спасибо.

Ответы [ 2 ]

5 голосов
/ 17 мая 2011

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

Вот краткий алгоритм:

  1. Когда комментарий публикуется, преобразуйте строку в нижний регистр и разбейте ее на слова (разделенные пробелами и, возможно, тире / пунктуация).
  2. В таблице слов хранится каждое слово с идентификатором, если его еще нет в таблице. (Здесь вы можете игнорировать обычные слова, такие как «или» для.)
  3. В таблице таблиц indexedwords идентификаторы слов, которые вы только что вставили, в идентификатор записи комментария (или статьи, если это то, что вы хотите вернуть).
  4. При поиске разделите поисковый запрос на слова и найдите все сообщения, содержащие каждое из слов. (Опять же, здесь вы можете игнорировать общие слова.)
  5. Упорядочить результаты по количеству вхождений. Если результаты должны содержать все слова, которые вам понадобятся, чтобы найти объединение различных массивов сообщений.
2 голосов
/ 17 мая 2011

В качестве точки входа вы можете использовать MySQL LIKE-запросы.

Например, если у вас есть таблица 'comments' со столбцом с именем 'comment', и вы хотите найти все комментарии, содержащие слово 'red', используйте:

SELECT comment FROM comments WHERE comment LIKE '% red %';

Обратите внимание, что полнотекстовый поиск может быть медленным, поэтому, если ваша база данных очень большая или вы часто выполняете этот запрос, вам нужно найти оптимизированное решение, такое как Sphinx (http://sphinxsearch.com).

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