The OpenNET Project / Index page

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

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

"Разработка поиска"
Сообщение от OZZY Искать по авторуВ закладки on 18-Дек-03, 11:00  (MSK)
Разрабатываю поиск для базы данных.Нужно название строковой функции , которая бы удаляла не нужные символы в запросе , т.е. пользователь ввел искомое слово и случайно нажал на "." или ",".И как она записывается.
И так же нужно чтобы при запросе выводились слова с разными окончаниями , а не строгое соответствие, т.е. ввожу слово аппарат , вывод был аппарат, аппарата, аппараты и т.д.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

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

1. "Разработка поиска"
Сообщение от Xela emailИскать по авторуВ закладки on 18-Дек-03, 11:20  (MSK)
>, а не строгое соответствие, т.е. ввожу слово аппарат , вывод
>был аппарат, аппарата, аппараты и т.д.


select * from anything where my_column like '%аппарат%'

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

2. "Разработка поиска"
Сообщение от OldOwl Искать по авторуВ закладки on 18-Дек-03, 12:23  (MSK)
>Разрабатываю поиск для базы данных.Нужно название строковой функции , которая бы удаляла
>не нужные символы в запросе , т.е. пользователь ввел искомое слово
>и случайно нажал на "." или ",".И как она записывается.
>И так же нужно чтобы при запросе выводились слова с разными окончаниями
>, а не строгое соответствие, т.е. ввожу слово аппарат , вывод
>был аппарат, аппарата, аппараты и т.д.

Корректировать строку поиска лучше в скрипте, формирующем запрос:

PHP:
$search_string = ereg_replace("[\.,]", " ", $search_string);

PERL:
$search_string =~ s/[\.,]/ /g;
(Извиняюсь, была опечатка, вместо =~ написал ~=)

А потом уже:
$query = "select * from my_table where my_column=$search_string%";

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

3. "Разработка поиска"
Сообщение от OZZY Искать по авторуВ закладки on 18-Дек-03, 13:25  (MSK)
почему-то пишет несоответствие типа: 'ereg_replace'
может я что-то не так делаю qText = ereg_replace("[\.,]", " ", qText)

qText- это запрос получаемый от пользователя.
Для удаления пробелов я использовала qText = Trim(qText)работает замечательно ,так же вычитала информацию что этой же функцией можно и символы удалять, но как правильно записать не знаю .Пишу как разобрано в примере , постоянно ругается, то скобка не там, ставишь ее, потом пишет лишняя, не знаю как быть.Помогите разобраться.

Trim Возвращает строку str со всеми remstr префиксами и/или прибавляет удаленный. Если ни один из спецификаторов BOTH | LEADING | TRAILING не указан, по умолчанию принимается BOTH. Если не определен параметр remstr, то он по умолчанию принимается равным пробелу.select TRIM(BOTH 'x' FROM 'xxxbarxxx'); -> 'bar'

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

4. "Разработка поиска"
Сообщение от OldOwl Искать по авторуВ закладки on 18-Дек-03, 19:46  (MSK)
>почему-то пишет несоответствие типа: 'ereg_replace'
>может я что-то не так делаю qText = ereg_replace("[\.,]", " ", qText)

Вообще-то подразумевается, что qText - это переменная. Поэтому должно быть:
$qText = ereg_replace("[\.,]", " ", $qText);

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

5. "Разработка поиска"
Сообщение от MEGA emailИскать по авторуВ закладки on 20-Дек-03, 02:47  (MSK)
>Разрабатываю поиск для базы данных.Нужно название строковой функции , которая бы удаляла
>не нужные символы в запросе , т.е. пользователь ввел искомое слово
>и случайно нажал на "." или ",".И как она записывается.
>И так же нужно чтобы при запросе выводились слова с разными окончаниями
>, а не строгое соответствие, т.е. ввожу слово аппарат , вывод
>был аппарат, аппарата, аппараты и т.д.


$mystr = "strings like '%".ereg_replace(",","%",
         ereg_replace(" ","%' and string like '%",
         ereg_replace(".","%",
         ereg_replace("\!","%",
         ereg_replace("ну и т.д.","%",
         $mystr)))))."%'";

$query = "Select * from searchbase where $mystr";
Вот и все, кстати strings - это столбец, в в котором идет поиск, а searchbase таблица

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

6. "Разработка поиска"
Сообщение от Zerg WereWolf Искать по авторуВ закладки on 01-Мрт-04, 14:26  (MSK)
regexp + SQL: SELECT * FROM table WHERE match (strfield) against (searchkey)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Разработка поиска"
Сообщение от ACCA Искать по авторуВ закладки(??) on 07-Май-04, 21:55  (MSK)
>И так же нужно чтобы при запросе выводились слова с разными окончаниями
>, а не строгое соответствие, т.е. ввожу слово аппарат , вывод
>был аппарат, аппарата, аппараты и т.д.

В общем случае ты попадаешь на морфологический анализ. Пример - строка поиска содержит "загородка", хочешь ли ты найти "городить"? А "выродки"?

В простейшем случае достаточно алгоритма Портера (поиск/замена по шаблону). Ещё есть такое решение, как N-Grams (триграмы и выше).

Про поиск и про строки - всё нужно преобразовывать в UNICODE. Запрос может придти в CP1251, CP866, KOI8, UTF8.


Ещё замечу, что еврейский парень по имени Сергей Брин собирается получить за программу, которая делает поиск, 2.7182818 зелёных миллиарда. С русской морфологией он пока не заморачивается.

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


Удалить

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




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

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