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

Форум Регулярные Выражения

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

 

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

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

тема: Поиск на сайте
 
 автор: prodigy   (31.03.2011 в 18:42)   письмо автору
 
 

Хочу сделать поиск на сайте и вот нужно чтоб:

1. запрос разбивался на слова, если в конце слова есть пробелы или знаки препинания;
2. чтоб каждое полученное слово могло иметь в любом месте ошибку но база все равно его могла вытащить, типа:

запрос от пользователя: 'Чилавек поук'

а база должна выдать похожее, к примеру: 'Человек паук'

  Ответить  
 
 автор: cheops   (31.03.2011 в 18:46)   письмо автору
 
   для: prodigy   (31.03.2011 в 18:42)
 

1. Можно воспользоваться функцией preg_split() и регулярным выражением вида
/[\s.,:!?]+/

2. Автоматического решения тут нет, придется искать алгоритм по ошибкам набора. В любом случае это здорово увеличивает нагрузку.

  Ответить  
 
 автор: prodigy   (31.03.2011 в 22:21)   письмо автору
 
   для: cheops   (31.03.2011 в 18:46)
 

>1. Можно воспользоваться функцией preg_split() и регулярным выражением вида
>
/[\s.,:!?]+/

>2. Автоматического решения тут нет, придется искать алгоритм по ошибкам набора. В любом случае это здорово увеличивает нагрузку.

Согласен, второе требование даст большую нагрузку, и долго придумывать его, просто, бывает, юзер набирает STALKER вместо S.T.A.L.K.E.R. и база не видит это, в общем сделать хороший поиск на все случаи жизни очень сложно, как выход, можно приделать поиск от гугла, думаю, это единственный вариант.

  Ответить  
 
 автор: cheops   (31.03.2011 в 22:26)   письмо автору
 
   для: prodigy   (31.03.2011 в 22:21)
 

Лучше помещать в журнал все сообщения пользователей на которые не было найдено результатов и наиболее популярные запросы регулярно рассматривать и вводить для них правила обработки.

  Ответить  
 
 автор: prodigy   (31.03.2011 в 22:48)   письмо автору
 
   для: cheops   (31.03.2011 в 22:26)
 

Спасибо за ответ, я немного усилил ваше решение:

$text = '{}[]\'"ёЁ`~:;|\/+=-_?7&*%()Вот, какие дела творятся,<br///> в;нашем[]мире                               !';
$text = trim(strip_tags($text));
$arr = preg_split("|[^_-\w\dАаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя]+|i", $text, -1, PREG_SPLIT_NO_EMPTY);

  Ответить  
Rambler's Top100
вверх

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