За последние 24 часа нас посетили 16647 программистов и 1651 робот. Сейчас ищут 1484 программиста ...

Реализация поиска только по слову

Тема в разделе "PHP для новичков", создана пользователем kilroy, 20 авг 2008.

  1. kilroy

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

    С нами с:
    25 фев 2008
    Сообщения:
    46
    Симпатии:
    0
    Адрес:
    у тебя пельмени?
    PHP:
    1. case 'search';
    2. head ('> Поиск', 'Результаты поиска');
    3.  
    4.  
    5. // строгий / нестрогий поиск
    6. $s_type = 1;
    7.  
    8.  
    9. $ij = 'news:interview:archive:documents';
    10. $jfk [news]='новостях';
    11. $jfk [interview]='интервью';
    12. $jfk [archive]='архиве';
    13. $jfk [documents]='документах';
    14.  
    15.  
    16. $ij = explode (':', $ij);
    17.  
    18.         foreach ($ij as $i) {
    19.  
    20.  
    21. $bar = "$i WHERE ";
    22. $sql = mysql_query ("SELECT * FROM $i LIMIT 1", $mysql);
    23. $foo = mysql_fetch_array ($sql);
    24. $keys = array_keys($foo);
    25.  
    26. $cher = 'id division caption dujour images mainewsimage conf region source date mainimage';
    27. $cher = explode (" ", $cher);
    28.  
    29.  
    30.         foreach($keys as $kre) {
    31.         if ((strval($kre)==0)&&($kre!='0')&&(!in_array ($kre, $cher))) {
    32.  
    33.        if ($s_type == 1 || count (explode (' ', $req) < 3)) {
    34.        $bar .= "$kre like '%%$req%%' OR ";
    35.        } else {
    36.                        $rq = explode (' ', $req);
    37.                                $bar .= "(";
    38.                        foreach ($rq as $rrq) {
    39.                      $bar .= "$kre like '%%$rrq%%' AND ";
    40.                        }
    41.                     $bar .= "1=1) OR ";
    42.        }
    43.  
    44.        }
    45.     }
    Это моя конструкция поиска.Для примера. Впринцепе мало чем отличаеться от стандартных типовых и быстрых решений.
    Но вся эта каляска ищет не слово, а только то что забьешь в поиск.
    Допустим ищем "Гер" , оно найдем нам "Геракл",Геркулес", "Герундий", а на самом деле надо что бы нашел только отдельное слово "Гер", что бы не искал части слов, а целые слова искал...
    эээ...понятно выразился? *голова уже не варит*
     
  2. kilroy

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

    С нами с:
    25 фев 2008
    Сообщения:
    46
    Симпатии:
    0
    Адрес:
    у тебя пельмени?
    Грубо говоря сделать жесткий поиск....
     
  3. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    код не читал, да и не буду, наверно :)

    зато знаю, что
    [sql]SELECT * FROM `таблица` WHERE `поле` LIKE 'Гер%' [/sql]
    выведет
     
  4. kilroy

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

    С нами с:
    25 фев 2008
    Сообщения:
    46
    Симпатии:
    0
    Адрес:
    у тебя пельмени?
    Эээ...Luge...

    Не, я не о том.

    Есть текст. Например :
    "Блаблабла бла балбла гер блабла бла"

    и

    "Блаблабла бла балбла геракл блабла бла"

    мы ищем слово "гер" и вывестись должен только первый текст который я привел в пример.

    мм?
     
  5. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
  6. kilroy

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

    С нами с:
    25 фев 2008
    Сообщения:
    46
    Симпатии:
    0
    Адрес:
    у тебя пельмени?
    Блин.Этот метод не годиться.

    А если допустим написать регулярное выражение на проверку пробелов до слова и псоле слова, а так же после слова на всякие точки, запятые, тире и двоеточия.

    ммм, так можно?
    Если да то не опдскажете с чего начать и как вообще должно это выглядеть..?
     
  7. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    чем не годится?
    Все ответы есть там http://mysql.ru
     
  8. kilroy

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

    С нами с:
    25 фев 2008
    Сообщения:
    46
    Симпатии:
    0
    Адрес:
    у тебя пельмени?
    Ну я не так хорошо в php.
    Посмотрите на код выше, там ж придеться все переписывать практически с нуля...
    Мне кажеться с регулярными вырожениями будет проще и быстрее...

    Может быть кто нить напишет код за небольшое вознагрождение...?
     
  9. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    стопицодстроккода((

    А чем не годится выборка из базы с запросом LIKE?

    Запрос
    [sql]SELECT * FROM `womans` WHERE `name` LIKE '%мма%';[/sql]

    Выведет
    Эмма | Эммалия | Эммануелла

    Запрос
    [sql]SELECT * FROM `womans` WHERE `name` LIKE 'Мма%';[/sql]

    Выведет
    Ммака | Мманюня

    Запрос
    [sql]SELECT * FROM `womans` WHERE `name` LIKE 'Эмм';[/sql]

    Выведет жестко
    Эмм | Эмм , но не все похожие варианты.
     
  10. kilroy

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

    С нами с:
    25 фев 2008
    Сообщения:
    46
    Симпатии:
    0
    Адрес:
    у тебя пельмени?
    Я уже так делал))) и не работало.

    Сейчас проверил, оказываеться у меня поиск тока по заголовку новости, а по содержимому нету)))

    млиоо %)
     
  11. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    ну бывают такие казусы.
    У меня тож)))) Вроде пишешь - не работает. Все уже просмотрел, а ошибка-то под самым носом))
    %)