Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поиск с перестановкой
 
 автор: trancecom   (25.04.2007 в 16:31)   письмо автору
 
 

Всем здравствуйте.
Как можно осуществить поиск по полю с возможностью перестановки слов.
т.е. например имеем запись: сидоров иван александрович
нужно что бы она находилась по "сидоров иван александрович", "иван александрович сидоров", "александрович иван сидоров" и т.п. и вообще возможен ли такой поиск. понимаю, что нужно использовать REGEXP, но дальше этого мысль не уходит
p.s.
поиск без перестановки слов средствами пхп
Спасибо.

   
 
 автор: Trianon   (25.04.2007 в 16:50)   письмо автору
 
   для: trancecom   (25.04.2007 в 16:31)
 

если поиск средствами php - при чем тут mysql?

   
 
 автор: trancecom   (26.04.2007 в 13:19)   письмо автору
 
   для: Trianon   (25.04.2007 в 16:50)
 

Поиск средствами mysql. т.е. весь поиск в запросе

   
 
 автор: Trianon   (26.04.2007 в 14:14)   письмо автору
 
   для: trancecom   (26.04.2007 в 13:19)
 

Конкретно для Ф.И.О я бы просто перечислил все реальные варианты
<?
$nf 
'Сидоров';
$ni 'Иван';
$no 'Александрович';

$nf mysql_escape_string($nf);
$ni mysql_escape_string($ni);
$no mysql_escape_string($no);

$ni1 $ni[0];
$no1 $no[0];

$opts = array();
$opts[] = "$ni $nf";
$opts[] = "$nf $ni";
$opts[] = "$ni $no $nf";
$opts[] = "$nf $ni1.$no1.";
$opts[] = "$ni1.$no1.$nf";

foreach(
$opts as $k => $v
    
$opts[$k] = "\r\n  field LIKE '%$v%'";
$cond=  implode(' OR '$opts);

$sql "SELECT * FROM tab WHERE $cond";

echo 
"<pre>$sql</pre>";

?>

   
 
 автор: cheops   (26.04.2007 в 14:14)   письмо автору
 
   для: trancecom   (25.04.2007 в 16:31)
 

Лучше использовать полнотекстовый поиск - он автоматически осуществляет такой поиск. Кроме того, фразу можно разбить на слова и для каждого слова формировать отдельные условия, которые объединять при помощи операторов and или or.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования