The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"вопрос по поиску на сайте"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"вопрос по поиску на сайте"
Сообщение от Line emailИскать по авторуВ закладки on 16-Мрт-04, 18:59  (MSK)
Те кто делали сами модуль поиска по БД, наверняка столкнулись с проблемой отсечки спец символов и пробелов в запросе.
Интересует скрипт php.
Спасибо.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "вопрос по поиску на сайте"
Сообщение от solotony emailИскать по авторуВ закладки on 16-Мрт-04, 20:01  (MSK)
А регулярные выражения не помогают?
Их можно использовать в запросе MySQL
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "вопрос по поиску на сайте"
Сообщение от Line emailИскать по авторуВ закладки on 16-Мрт-04, 22:40  (MSK)
>А регулярные выражения не помогают?
>Их можно использовать в запросе MySQL

А пример скрипта можно?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "вопрос по поиску на сайте"
Сообщение от Beut emailИскать по авторуВ закладки on 17-Мрт-04, 05:22  (MSK)
>>А регулярные выражения не помогают?
>>Их можно использовать в запросе MySQL
>
>А пример скрипта можно?

А ты перед отправкой в базу замени все спецсимволы на их условное обозначение. Это экранированием называется.

Например:

выаорво\апип&&dgdf#hfgh$jkh@`lkjklkk`kvb
выаорво\0апип\1\1dgdf\2hfgh\3jkh\4\5lkjklkk\5kvb

Никаких запретных символов уже нет. И когда отправляем запрос на поиск, в запросе поиска осуществляем соответствующую замену.

Когда же нужно выводить строки пользователю, получая их из базы, то проводим обратную замену.

Как на PHP это делается, не знаю, но на перле очень легко, буквально несколько символов набрать :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "вопрос по поиску на сайте"
Сообщение от MeLLowD Искать по авторуВ закладки on 17-Мрт-04, 16:22  (MSK)
>>>А регулярные выражения не помогают?
>>>Их можно использовать в запросе MySQL
>>
>>А пример скрипта можно?
>
>А ты перед отправкой в базу замени все спецсимволы на их условное
>обозначение. Это экранированием называется.
>
>Например:
>
>выаорво\апип&&dgdf#hfgh$jkh@`lkjklkk`kvb
>выаорво\0апип\1\1dgdf\2hfgh\3jkh\4\5lkjklkk\5kvb
>
>Никаких запретных символов уже нет. И когда отправляем запрос на поиск, в
>запросе поиска осуществляем соответствующую замену.
>
>Когда же нужно выводить строки пользователю, получая их из базы, то проводим
>обратную замену.
>
>Как на PHP это делается, не знаю, но на перле очень легко,
>буквально несколько символов набрать :)

// урезаем строку до 64 символов чтобы не нагружать БД
$str = substr($str, 0, 64);
// поисковая строка не менее трех символов, причины см. выше
$str = trim(preg_replace("/\s(\S{1,2})\s/", " ", ereg_replace(" +", "  "," $str ")));
// сжатие двойных пробелов
$str = ereg_replace(" +", " ", $str);

далее вырезаем хтмл код, пример 5 из документации по preg_replace

// добавляем слэши если надо
if (get_magic_quotes_gpc()) $str = addslashes($str);
// либо вообще вырезаем все "ненормальные" символы
$str = preg_replace("/[^\w\x7F-\xFF\s]/", " ", $str);

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "вопрос по поиску на сайте"
Сообщение от solotony emailИскать по авторуВ закладки on 17-Мрт-04, 16:52  (MSK)
Я строю для этой цели отдельную индексную таблицу - база данных обходится, из нее выбираются слова и строится таблица [слово]->[индекс записи].
Тогда довольно шустро работает.

Если этого не делать, то поиск (SELECT ... WHERE ... LIKE ...) может стать мучительно долгим, особенно на большой базе, так как на таком запросе не будет работать индексирование.

Дополнительно к такой структуре лекго прикрутить морфологию.
[слово]<->[основная форма слова]. Для экономии места можно морфологические правила хранить в исходном формате, или хранить не слова, а CRC.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру