Например искомая фраза " 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
Я и не говорил что это идеальный вариант.
Я и не говорил что это идеальный вариант.
_____________
Подпись отключена за НЕуплату