За последние 24 часа нас посетили 20296 программистов и 1008 роботов. Сейчас ищут 367 программистов ...

Пример запроса поиска по словам

Тема в разделе "PHP для новичков", создана пользователем ilya45, 7 фев 2023.

  1. ilya45

    ilya45 Новичок

    С нами с:
    1 янв 2023
    Сообщения:
    86
    Симпатии:
    2
    У меня не получается сделать поиск по словам
    'like' не помогает.
    Допустим есть выражение "Алексей гулял по парку в Москве"
    нужно получить все записи в которых есть хотя бы одно из слов в этом выражении для sql
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Варианты:
    1. Самому разбить на слова, сделать большой like через or (t like '%Алексей%" or t like '%гулял%" и т.д.)
    2. Если mysql, можно попробовать полнотекстовый индекс и match against (но не будет учитывать словоформы)
    3. В постгрессе тоже такой индекс есть, поищи
    4. Поставить спец. движок для поиска типа Sphinx, там будут учитываться и падежи
     
    ilya45 нравится это.
  3. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    417
    Симпатии:
    71
    Приведи хотя бы пример своего кода...
     
  4. ilya45

    ilya45 Новичок

    С нами с:
    1 янв 2023
    Сообщения:
    86
    Симпатии:
    2
    PHP:
    1. if (!empty($search_key)) {
    2.                     $get_ilanlar = $connect->prepare("SELECT*FROM ilanlar WHERE
    3.                    status= ? and title = ? ");
    4.                     $get_ilanlar->execute(['yayında',"%search_key%"]);
    5.                     $get_ilanlar = $get_ilanlar->fetchall(PDO::FETCH_ASSOC);
    6.                         foreach ($get_ilanlar as $key => $value)
    7.                          {
    8.                             echo $get_ilanlar['title'];
    9.                        
    Вообще нет результатов,я хз как посмотреть что внутри массива который получен после запроса
     
  5. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    417
    Симпатии:
    71
    Почему в запросе не использовать LIKE?
    $get_ilanlar = $connect->prepare("SELECT * FROM ilanlar WHERE status = ? and title LIKE ? ");
    Вывести результат можно так:
    $get_ilanlar->execute(['yayında',"%".$search_key."%"]);
    $get_ilanlar = $get_ilanlar->fetchall(PDO::FETCH_ASSOC);

    print_r($get_ilanlar);
     
    ilya45 нравится это.
  6. ilya45

    ilya45 Новичок

    С нами с:
    1 янв 2023
    Сообщения:
    86
    Симпатии:
    2
    [QUOTE title LIKE ? ");
    [/QUOTE]
    Лол я просто забыл указать like в нужном месте и вот мой косяк,мда
    --- Добавлено ---
    спс помог кстать
     
    antoniii нравится это.
  7. ilya45

    ilya45 Новичок

    С нами с:
    1 янв 2023
    Сообщения:
    86
    Симпатии:
    2
    Классный вариант,рассмотрю,благодарю