[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск в MySql по словам
Страницы: 1, 2
arbuzmaster
Добрый день!! Подскажите пожалуйста как сделать выборку из MySql по словам из массива! Например есть массив из слов(жил,был,синий,слон) а в БД есть запись (был жил синий слон)


$text_arry=explode(" ", $start_command);
$stroki=sizeof($text_arry);
$nambers_words=$stroki-1;
for ($i = 0; $i <= $nambers_words; $i++) {

$word=$text_arry[$i];
$slon_name=mysql_query("SELECT `slon_id` FROM `test_slon` WHERE `name` LIKE '%".$word."%'");
while($result_id = mysql_fetch_assoc($slon_name)) {
// print_r($result_id);
echo $result_id['slon_id']."<br>";
echo $word."<br>";
}

}


Написал как то так !! В итоге по 2-м слонам если в БД есть ( был жил красный слон) получаю 7 ответов 3по красному и 4 по синему!! Вопрос как получить 1 и 100% ответ?

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
T1grOK
`name` LIKE '%жил%' AND `name` LIKE '%был%' AND ...


_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
arbuzmaster
Цитата (T1grOK @ 24.06.2014 - 19:50)
<pre class="sh_sourceCode" rel="sql"><span class="sh_att">`name`</span> <span class="sh_keyword">LIKE</span> <span class="sh_string">'%жил%'</span> <span class="sh_keyword">AND</span> <span class="sh_att">`name`</span> <span class="sh_keyword">LIKE</span> <span class="sh_string">'%был%'</span> <span class="sh_keyword">AND</span> <span class="sh_symbol">...</span></pre>

А если слов не 4 а 500 Я имею в виду в БД

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
Valick
arbuzmaster, изучай полнотекстовый поиск


_____________
Стимулятор ~yoomoney - 41001303250491
arbuzmaster
Я так понимаю нужен какой то цикл в котором с начало ищется по первому слову потом по первому и второму потом по первому и второму и третьему и т.д. ?

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
Valick
arbuzmaster, нет.
И не надо ничего изобретать, начинайте изучать.
Всё уже давно придумано и оптимизированно.

_____________
Стимулятор ~yoomoney - 41001303250491
arbuzmaster
А все таки изобрёл!!! В общем смысл такой - 1п извлекаем из БД строку 2п разбиваем на слова и пихаем в массив 3п array_intersect сравниваем и если число строк в массиве 1 совпадает с выходным массивом -Выводим инфу из БД

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
rooor
а если почитать про полнотекстовый поиск и релевантность?
T1grOK
Жуть. Будет 500к строк в БД и такой алгоритм попросту нагнет сервер.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
arbuzmaster
Как то так!!

$text_arry=explode(" ", $start_command);
$slon_name_arry=mysql_query("SELECT * FROM `slon` ");
while($slon_name_action=mysql_fetch_array($slon_name_arry))
{
$slon_name_1=$slon_name_action['name'];
$slon_arry=explode(" ", $slon_name_1);
$result=array_intersect($slon_arry, $text_arry);

if(sizeof($slon_arry)==sizeof($result)) {$slon_name=$slon_name_1; }


}

echo $slon_name;


_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
Valick
я плакать
Цитата
А все таки изобрёл!!!

такое "изобретение" это повод исправить ошибку и уволить нахрен сотрудника, которого приняли на работу (как выясняется по ошибке)

_____________
Стимулятор ~yoomoney - 41001303250491
FatCat
Цитата (T1grOK @ 25.06.2014 - 22:21)
Будет 500к

Если будет 500 К строк, попытка добавить новую запись в таблицу (с апдейтом полнотекстового поиска) положит сервер минут на 5, если раньше не выбьет по таймауту...
У нас на форуме полнотекстовый поиск пришлось отключить, когда количество строк превысило 50 К.

Полнотекстовый поиск хорош для маленьких таблиц... с английским текстом...
С английским работает неплохо, а с русским одни слёзки...

_____________
Бесплатному сыру в дырки не заглядывают...
Zzepish
FatCat
а как поисковики реализую поиск? Я когда ставил движок, там можно было еще процентость указать
arbuzmaster
Я не пойму откуда цифра 500 000 ? Я писал 500 и это примерно !! И это работает как мне нужно!

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
FatCat
Цитата (Zzepish @ 26.06.2014 - 02:25)
как поисковики реализую поиск?

Я не программист яндекса или гугла, поэтому не знаю как реализовано у них.
Когда я делал нечто подобное, я писал свой собственный механизм поиска, довольно быстрый. Но я упростил задачу: база миллионы словосочетаний (вордстат яндекса), и нужно выбрать из базы те словосочетания, все слова которых (с учетом орфографии) присутствуют в тексте - список релевантных тексту запросов вордстата.
На домашнем ноутбуке под Денвером текст 10 К букв обрабатывается базой 100 млн словосочетаний секунд за 40. Алгоритм мой доморощенный.


Цитата (arbuzmaster @ 26.06.2014 - 19:10)
И это работает как мне нужно!

Это будет работать и на больших базах. Жму руку.

_____________
Бесплатному сыру в дырки не заглядывают...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.