Forum Webscript.Ru
Общие => Базы данных => Тема начата: tarya от 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%\' нно мне кажется это лишь припарки - чтото оно не работает. - помогите пожалуста ребята, плиззззззззззззззззззззз!
спасибо
-
книжень тут купил Поля Дюбуа
Применение MySQL и Perl...?
Страница 447. :)
-
не у меня первая книга наверное просто Мускл и все, так что ты незнаешь как помочь?
-
> нно мне кажется это лишь припарки - чтото оно не работает.
что именно не работает?
кроме того в MySQL есть еще и fulltext search...
-
незнаю, но не работает кажись или руки корявіе, а что такое fulltext search я вообще еще не прохавал, хотя читаю часто
-
я думал через LIKE \'%$find1%\' OR LIKE \'%$find2%\' OR LIKE \'%$find3%\'
Вообще-то это должно работать...;)
А ещё лучше посмотри в мануал и найди там функции MATCH() и AGAINST(), ну а если лень в ман лезть, то иди на http://detail.phpclub.net, там есть статья - "поиск с релевантностью".
PS на форуме есть такая классная штука как поиск, пользуйся им.
-
то иди на http://detail.phpclub.net,
я уже переспал со всеми статьями на том сайте по поиску, все 4 или 5 их там прочел по 40 раз, но не могу врубиться, там для сильно умных написано, так как не расписано какие поля за что отвечают, ну короче говоря не дохожу я умом....
ты говоришь должно работать? так может мне попробовать? а то я так толкком и непробовал, думад незароботает то что я написал
-
Я понял, у тебя с алгоритмом запарка...
Значит так:
полученные ключевые слова нужно разделить, построить для каждого из них LIKE. Регэкспом или иначе, не важно...
-
полученные ключевые слова нужно разделить, построить для каждого из них 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]%\'";
но ничего неработает :( как біть?
-
tarya
что именно не работает?
оно может выдавать ошибку, может не находит строк
попробуй проверить запрос не скриптом, а через mysql клиента.
-
А масив то существует?
У меня этот запрос работает:
$sql = "SELECT
$fld_Id
FROM
$tbl
WHERE
$fld LIKE \'%$SearchString[0]%\'
OR
$fld LIKE \'%$SearchString[1]%\'";
-
You have an error in your SQL syntax near \'LIKE \'%отели%\'\' at line 1
масив есть, я разделяю все слова и получается масив
примерно понял в чем запарка, наверное в MID(data , LOCATE(\'$find\', data) -10, 160) попробую вырезать кусок текста спомошью ПХП
-
data LIKE \'%$word[0]%\' OR LIKE \'%$word[1]%\'";
data LIKE \'%$word[0]%\' OR data LIKE \'%$word[1]%\'
ПС: там кто-то обещался купить себе книжку, как насчет того, что бы в ней и про синтаксис выражений почитать?
-
fidget
[OFF]Так купил же :)[/OFF]
-
[OFF]так я его попросила там про синтаксис почитать :-Р[/OFF]
-
data LIKE \'%$word[0]%\' OR data LIKE \'%$word[1]%\'
с этим я уже разобрался, но тогда у меня работает запрос но ничего не выводит из найденого так как MID(data , LOCATE(\'$find\', data) -10, 160) определяет начальное значение по первому слову, я буду решать эту проблему через ПХП
-
Кстати, "$word[0]" и "$word[1]" означают Array[0] и Array[1]. У тебя в тексте такие слова встречаются? :)