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

Тема в разделе "PHP", создана пользователем new_forward, 7 ноя 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. new_forward

    new_forward

    Регистр.:
    5 май 2008
    Сообщения:
    668
    Симпатии:
    44
    Сделал поиск , только он ищет целую строку целиком, а как сделать чтоб он искал не целую фразу, а слово в строке?:)
     
  2. Freeborn

    Freeborn Постоялец

    Регистр.:
    31 окт 2008
    Сообщения:
    62
    Симпатии:
    21
    Ну как сделал так и ищет:) Покажите людям код, кто-нибудь наверняка подскажет что и как сделать
     
  3. Hemi-Sync

    Hemi-Sync Постоялец

    Регистр.:
    17 дек 2006
    Сообщения:
    88
    Симпатии:
    38
    Сколько данных на входе поиска задашь - по стольким данным искать будет. Подробнее поясняй, что? как? и, главное, где ищем?
     
  4. new_forward

    new_forward

    Регистр.:
    5 май 2008
    Сообщения:
    668
    Симпатии:
    44
    Форма:
    Код:
    <form action="/answer/search.php" method="post">
    <input class="v_search" type="text" name="vopros" size="35" value="">
    <input type="submit" name="submit" value="Найти">
    Таблица :question
    Столбец или поле: title

    :)
     
  5. slik_jay

    slik_jay ^_^

    Регистр.:
    24 май 2008
    Сообщения:
    50
    Симпатии:
    27
    php-код покажи :be:
     
  6. new_forward

    new_forward

    Регистр.:
    5 май 2008
    Сообщения:
    668
    Симпатии:
    44
    Код:
    $search = $_POST['vopros'];
    	$rsQuestion = $objQuestion->GetList(array(array('title','=',$search),array('langid','=',$language_id)),'',true);
     
  7. Hemi-Sync

    Hemi-Sync Постоялец

    Регистр.:
    17 дек 2006
    Сообщения:
    88
    Симпатии:
    38
    В общем так. ТС очень туманно представляет, что происходит и что он хочет. Обьясняю ему.

    Это не поиск. Это выборка записи по значению ячейки в таблице бд. Поэтому может использоваться только фраза(значение, которое может быть в ячейке). Тебе же нужен поиск по слову содержащемуся в фразе, которая содержится в ячейке, то есть полнотекстовый поиск.

    Для этого используются запросы типа LIKE %word%(что грузно и медленно) либо индексатор, который проходит по базе и формирует у себя индекс по каждому слову. (что быстро, но нужно доп место на диске под индексы)

    Обьяснил как мог. То есть тебе надо использовать другой поиск. Вот его и допиши, а этот пусть остается.
     
    new_forward нравится это.
  8. new_forward

    new_forward

    Регистр.:
    5 май 2008
    Сообщения:
    668
    Симпатии:
    44
    А примерчика нет про "индексатор"?
     
  9. Hemi-Sync

    Hemi-Sync Постоялец

    Регистр.:
    17 дек 2006
    Сообщения:
    88
    Симпатии:
    38
  10. myweb

    myweb Среда обитания WEB

    Регистр.:
    10 сен 2007
    Сообщения:
    539
    Симпатии:
    246
    Вот примерчик из моего проекта :
    PHP:

    $search 
    substr(@$_GET['s'],0,65); 
    $search mysql_escape_string (trim($search));
    $search preg_replace("/[^\w\x7F-\xFF\s]/"" "$search);
    $search trim(preg_replace("/\s(\S{1,2})\s/"" ",ereg_replace(" +""  ",$search ")));
    $search ereg_replace(" +"" "$search);
     
    $slq "SELECT * FROM cat where ( cat.body LIKE '%"str_replace(" ""%' or cat.body LIKE '%"$search)."%' or cat.name LIKE '%"str_replace(" ""%' or cat.name LIKE '%"$search)."%' or cat.sbody LIKE '%"str_replace(" ""%' or cat.sbody LIKE '%"$search)."%')  LIMIT 30";

    PS. "or" можно менять на "and" и получим выборку "И" или "AБО"
     
Статус темы:
Закрыта.