[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с запросом
ohxxx
Добрый день

Например искомая фраза " bi house"

Нужно чтобы искало любое соответствие с любым из слов и в любом порядке

И любое из слов заданной фразы может быть началом слова
например результат поиска
big house
house bi
build house
bi456
housezzz
Надеюсь я понятно изложил

Я смог только придумать что сторогое соответствие с любым из слов.
через RLIKE.

mysqlQuery( "SELECT * FROM `". MAIN_DBPREFIX ."cn_all`
WHERE tov_name RLIKE 'big|house' "
);

Заранее благодарен за помощь.



Спустя 59 минут, 46 секунд (11.05.2010 - 00:27) Nikitian написал(а):
Как вариант:

$str="bi house";
$str=explode(' ',$str);
foreach($str as &$s)$s=$s.'%';
mysqlQuery( "SELECT * FROM `". MAIN_DBPREFIX ."cn_all`
WHERE tov_name RLIKE '"
.implode('|',$str)."' ");

Спустя 14 часов, 11 минут, 11 секунд (11.05.2010 - 14:38) ohxxx написал(а):
Не так не работает ( такой вариант сразу проверял) . Эти символы для LIKE а для RLIKE не работают

Спустя 1 час, 1 минута, 37 секунд (11.05.2010 - 15:39) FatCat написал(а):
$str="bi house";
$str=explode(' ',$str);
$i = 0;
foreach($str as $s)
{
if(trim($s))
{
if($i)$where .= " OR tov_name LIKE '% ".trim($s)."%' OR tov_name LIKE '".trim($s)."%'";
else $where = " tov_name LIKE '% ".trim($s)."%' OR tov_name LIKE '".trim($s)."%'";
$i++
}
}

mysqlQuery( "SELECT * FROM `". MAIN_DBPREFIX ."cn_all`
WHERE "
.$where);

Спустя 2 часа, 41 минута, 51 секунда (11.05.2010 - 18:21) vagrand написал(а):
LIKE тут самый плохой вариант, можно попробовать регулярные выражения в запросе, но при больших объемах данных запрос так же будет медленным. Так же можно попробовать (если строка предполагается небольшой) разбить сроку на слова и создать отдельную табличку, которую связать с основной и искать уже поней строгим соответствием. Ну и самый лучший на мой взгляд вариант это использовать что-то вроде sphinx

Спустя 5 часов, 59 минут, 1 секунда (12.05.2010 - 00:20) FatCat написал(а):
Цитата (vagrand @ 11.05.2010 - 19:21)
создать отдельную табличку, которую связать с основной и искать уже поней

Такая хрень сделана в движке форума phpBB2.
Искать-то ищет быстрее. Зато при добавлении нового сообщения в форум приходится перестраивать всю таблицу поисковых слов; в результате при наборе относительно небольшого числа сообщений в форуме (100-200 К), начинаются жуткие тормоза при отправке сообщения.

Спустя 11 часов, 53 минуты, 15 секунд (12.05.2010 - 12:13) vagrand написал(а):
FatCat

Я и не говорил что это идеальный вариант.


_____________
Подпись отключена за НЕуплату
Быстрый ответ:

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