Автор Тема: Поиск в базе по нескольким словам  (Прочитано 8028 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн tarya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 370
  • +0/-0
  • 0
    • Просмотр профиля
Поиск в базе по нескольким словам
« : 23 Октября 2002, 13:31:56 »
Если чесно то я уже замучился, просмотрел кучу всяких тем и того и сего и книжень тут купил Поля Дюбуа и все не как не напишу поиск по нескольким словам.
у меня есть запрос:
SELECT MID(data , LOCATE(\'$find\', data) -10, 160)  AS data, link FROM u_find WHERE data LIKE \'%$find%\'
который отыскивает в индексе (я индексю весь сайт в базу) %$find% и как бы все классно работает когда в запросе 1 слово - например "китай" мне потом выводятся все куски текста где это слово встречается, а вот если человек написал "кукурузная мука в китае" и в индексе такого точно свпадения нет - значит результат ноль. как розбить слова на несколько я все могу - но кк потом составить запрос ? я думал через LIKE \'%$find1%\' OR LIKE \'%$find2%\' OR LIKE \'%$find3%\' нно мне кажется это лишь припарки - чтото оно не работает. - помогите пожалуста ребята, плиззззззззззззззззззззз!

спасибо
Рожденный с понимающим, и гордо поднятым кулаком! Свидетель разреза запястья — он с ним!

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Поиск в базе по нескольким словам
« Ответ #1 : 23 Октября 2002, 13:48:20 »
Цитировать
книжень тут купил Поля Дюбуа

Применение MySQL и Perl...?
Страница 447. :)
The documentations is your friend

Оффлайн tarya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 370
  • +0/-0
  • 0
    • Просмотр профиля
Поиск в базе по нескольким словам
« Ответ #2 : 23 Октября 2002, 13:53:54 »
не у меня первая книга наверное просто Мускл и все, так что ты незнаешь как помочь?
Рожденный с понимающим, и гордо поднятым кулаком! Свидетель разреза запястья — он с ним!

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Поиск в базе по нескольким словам
« Ответ #3 : 23 Октября 2002, 15:02:04 »
> нно мне кажется это лишь припарки - чтото оно не работает.

что именно не работает?

кроме того в MySQL есть еще и fulltext search...
На Машине Тьюринга далеко не уедешь.

Оффлайн tarya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 370
  • +0/-0
  • 0
    • Просмотр профиля
Поиск в базе по нескольким словам
« Ответ #4 : 23 Октября 2002, 15:12:41 »
незнаю, но не работает кажись или руки корявіе, а что такое fulltext search я вообще еще не прохавал, хотя читаю часто
Рожденный с понимающим, и гордо поднятым кулаком! Свидетель разреза запястья — он с ним!

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Поиск в базе по нескольким словам
« Ответ #5 : 23 Октября 2002, 15:13:09 »
Цитировать
я думал через LIKE \'%$find1%\' OR LIKE \'%$find2%\' OR LIKE \'%$find3%\'

Вообще-то это должно работать...;)

А ещё лучше посмотри в мануал и найди там функции MATCH() и AGAINST(), ну а если лень в ман лезть, то иди на http://detail.phpclub.net, там есть статья - "поиск с релевантностью".

PS на форуме есть такая классная штука как поиск, пользуйся им.
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн tarya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 370
  • +0/-0
  • 0
    • Просмотр профиля
Поиск в базе по нескольким словам
« Ответ #6 : 23 Октября 2002, 15:22:43 »
Цитировать
то иди на http://detail.phpclub.net,

я уже переспал со всеми статьями на том сайте по поиску, все 4 или 5 их там прочел по 40 раз, но не могу врубиться, там для сильно умных написано, так как не расписано какие поля за что отвечают, ну короче говоря не дохожу я умом....
ты говоришь должно работать? так может мне попробовать? а то я так толкком и непробовал, думад незароботает то что я написал
Рожденный с понимающим, и гордо поднятым кулаком! Свидетель разреза запястья — он с ним!

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Поиск в базе по нескольким словам
« Ответ #7 : 23 Октября 2002, 15:26:30 »
Я понял, у тебя с алгоритмом запарка...
Значит так:
полученные ключевые слова нужно разделить, построить для каждого из них LIKE. Регэкспом или иначе, не важно...
The documentations is your friend

Оффлайн tarya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 370
  • +0/-0
  • 0
    • Просмотр профиля
Поиск в базе по нескольким словам
« Ответ #8 : 23 Октября 2002, 17:06:01 »
Цитировать
полученные ключевые слова нужно разделить, построить для каждого из них LIKE.



я все сделал и получился запрос:
$query = "SELECT MID(data , LOCATE(\'$find\', data) -10, 160)  AS data, link FROM u_find WHERE data LIKE \'%$word[0]%\' OR LIKE  \'%$word[1]%\'";

но ничего неработает :( как біть?
Рожденный с понимающим, и гордо поднятым кулаком! Свидетель разреза запястья — он с ним!

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Поиск в базе по нескольким словам
« Ответ #9 : 23 Октября 2002, 17:17:39 »
tarya
что именно не работает?
оно может выдавать ошибку, может не находит строк

попробуй проверить запрос не скриптом, а через mysql клиента.
На Машине Тьюринга далеко не уедешь.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Поиск в базе по нескольким словам
« Ответ #10 : 23 Октября 2002, 17:21:51 »
А масив то существует?
У меня этот запрос работает:
$sql = "SELECT
               $fld_Id
             FROM
               $tbl
             WHERE
               $fld LIKE \'%$SearchString[0]%\'
             OR
               $fld LIKE \'%$SearchString[1]%\'";
The documentations is your friend

Оффлайн tarya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 370
  • +0/-0
  • 0
    • Просмотр профиля
Поиск в базе по нескольким словам
« Ответ #11 : 23 Октября 2002, 17:28:42 »
You have an error in your SQL syntax near \'LIKE \'%отели%\'\' at line 1


масив есть, я разделяю все слова и получается масив

примерно понял в чем запарка, наверное в MID(data , LOCATE(\'$find\', data) -10, 160) попробую вырезать кусок текста спомошью ПХП
Рожденный с понимающим, и гордо поднятым кулаком! Свидетель разреза запястья — он с ним!

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Поиск в базе по нескольким словам
« Ответ #12 : 23 Октября 2002, 17:34:02 »
Цитировать
data LIKE \'%$word[0]%\' OR LIKE \'%$word[1]%\'";


data LIKE \'%$word[0]%\' OR data LIKE \'%$word[1]%\'

ПС: там кто-то обещался купить себе книжку, как насчет того, что бы в ней и про синтаксис выражений почитать?
На Машине Тьюринга далеко не уедешь.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Поиск в базе по нескольким словам
« Ответ #13 : 23 Октября 2002, 17:45:18 »
fidget
[OFF]Так купил же :)[/OFF]
The documentations is your friend

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Поиск в базе по нескольким словам
« Ответ #14 : 23 Октября 2002, 17:59:40 »
[OFF]так я его попросила там про синтаксис почитать :-Р[/OFF]
На Машине Тьюринга далеко не уедешь.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28