Как сделать поиск "как в гугле"?

программирование Linux php MySQL

Два запроса mysql:
SELECT * FROM `table` WHERE `column` like '%текст%';
и
SELECT * FROM `table` WHERE MATCH (`column1`, `column2`) AGAINST ('текст');
Какой из них лучше использовать?
Если таблица будет содержать "MySQL — свободная система управления базами данных", то по запросу "свободная система" запись находит. А как сделать что-бы можно было найти, например, по такому запросу - "MySQL система управления базами"? То есть как сделать поиск "как в гугле"?

Примечание:
Не могу даже алгоритм составить, в этом основная проблема. Если бы алгоритм был, то "перевести" уже будет не проблема.

Примечание:
> Славный ты, думаешь поиск по базе так легко произвести?
Нет, если бы всё было просто, то я бы сделал и без подсказок.
> уже о таком гиганте.
Сравнение с гуглом было для лучшего понимания того, что нужно. Такой поиск есть на каждом сайте, а если это делают все значит сверх сложного тут ничего нет.

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

Примечание:
> просто подключите поиск Гугла по сайту и не заморачивайтесь
Глупо. Сейчас разберусь как это делается, а потом может смогу в других скриптах использовать.
> Лучше гугла все равно алгоритм не придумаете
А лучше мне и не надо.
Я зря наверно сотню баллов даю. Вы наверно думаете что написали ерунду и я выберу ваш ответ как лучший? Я ведь не прошу делать всё за меня, просто направление и больше мне ничего не нужно.

Примечание:
По-моему сделал дебильно, но работает :)
Вообще я борюсь за открытость разработок и по этому выкладываю его на общее пользование.

<?php
$dbpass="i'll not say :)"; // Пароль к БД

$db=mysql_connect("localhost", "root", $dbpass); // соединение с БД

mysql_select_db("bots", $db); // выбор БД

mysql_query("SET NAMES UTF8"); // Устанавливаем нужную кодировку (в mysql по дефолту кодировка latin1, а у пингвина UTF-8 и из-за этого поиск работает только с латиницей)

$message=$_POST['message']; // Принимаем строку от юзера

$mas=explode(" ", $message); // Разделяем её на слова. Словом считаем комбинацию символов между пробелами

$mas = array_unique($mas); // Удаляем повторяющиеся слова

$j=0;

$search = "SELECT * FROM `bot` WHERE `answer` like '%".$mas["$j"]."%'"; // Помещаем первую часть запроса в переменную

// Тут ничего сложного нету, кому надо разберётся :)
for($i=0, $count=count($mas); $i<$count-1; $i++){
$g=$i+1;
$search .= " OR '%".$mas["$g"]."%'";
$j++;
}

$get_results = mysql_query("$search"); // Посилаем запрос в БД
$results_number = mysql_numrows($get_results); // Узнаём сколько результатов найдено

if($results_number > 0){ // Если найдено больше ноля
// Выводим всё найденное
while ($arr=mysql_fetch_array($get_results)){
print $arr['question']."<br>";
}
}
else{
print "Ничего не найдено.";
}
?>

Если посмотрите на таблицу, поймёте, что делал бота. По этому и нужен был "поиск как в гугле" и комментарий "просто подключите поиск Гугла" мне никак не был бы полезен. Гугл не способен на такое, он мог бы найти только по сайту, а у меня другая цель. Да и вообще мне кажется, что даже использовать поиск по сайту с помощью поисковиков это не разумно. Зачем тогда вообще заниматься программированием, если не можешь ничего сделать самостоятельно.

Если кто-нибудь поправит скрипт, укажет на ошибки или ещё как-нибудь поможет - выберу его в качестве лучшего. За просто так сотню баллов никому не подарю.

Примечание:
UrsaMajor, спасибо за ответ, но так получается, что посылаешь запросы в БД несколько раз. А если фраза будет 50 слов? Нагрузка на сервер, время выполнения и много чего ещё. А если пользователей будет много, то количество запросов будет ещё больше. В общем, это не вариант. Лучше одной строкой, как у меня:
SELECT * FROM `bot` WHERE `answer` like '%бла-бла%' OR '%бла-бла...%';

Примечание:
Кстати у гугла наверно используется что-то подобное:
..WHERE MATCH (`column1`) AGAINST..

Примечание:
Ещё можно удалять слова короче 4-х символов и "бесполезные", то есть те которые для связки слов (а, и, или, как, это и тд).
Но это уже танцы с напильником, а я выложил каркас, который явно нуждается в доработке.
Ответы:
SELECT `table` FROM  `column`  WHERE ALL >= ALL
Славный ты, думаешь поиск по базе так легко произвести?
Что стоит элементарный алгоритм сортировки Пузырек, не говоря уже о таком гиганте.
Аж страшно даже помечтать на эту тему
просто подключите поиск Гугла по сайту и не заморачивайтесь. Лучше гугла все равно алгоритм не придумаете
очевидно что гугл разбивает фразу на слова, и затем производится многоуровневая фильтрация.
Т.е.  в данном случае фраза "MySQL система управления базами" разобьётся на 4 слова:


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

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

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.