MySql FULLTEXT - полнотекстовый поиск по БД

Тема в разделе "PHP", создана пользователем fredis69, 24 авг 2010.

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

    fredis69 Постоялец

    Регистр.:
    25 окт 2008
    Сообщения:
    84
    Симпатии:
    2
    Уважаемые пользователи помогите решить задачу с поиском по БД, надо сделать поиск который будет выводить данные поиска по релевантости, для этого я использую FULLTEXT, но если мне надо выводить данные по релевантности, тогда в поиск надо вбивать поисковые слова полностью (пример если мне надо найти в базе: "крем для масажа" а я в поисковую строку вбиваю просто слово масаж то он мне ничего не выведет, а вот если я вбиваю масажа тогда выводит), как реализовать поиск по БД если слово допустим недописано?


    Пример 1 Выводит по релевантности, но не ищет по недописаным словам:
    PHP:
    $res"SELECT * FROM product WHERE MATCH (title,description) AGAINST ('$q')";
    $result mysql_query($res) or die("Запрос ошибочный");
    $row mysql_fetch_array($result);

    Пример 2 ищет по недописаным словам, но выводит по id, а не по релевантности:
    PHP:
    $res"SELECT * FROM product WHERE MATCH (title,description) AGAINST ('$q*' IN BOOLEAN MODE)";
    $result mysql_query($res) or die("Запрос ошибочный");
    $row mysql_fetch_array($result);

    Как сделать, чтобы искал по недописаным словам и выводил результаты по релевантности?
    Или можите подсказать какой нибуть другой способ поиска по БД, но учтите что у меня в БД товара более 20 тысяч наименований
     
  2. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
  3. fredis69

    fredis69 Постоялец

    Регистр.:
    25 окт 2008
    Сообщения:
    84
    Симпатии:
    2
    А как его установить на хостинге?
    Установить можно без проблем? или нет?
     
  4. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Попробуй так сделать:
    PHP:
    $res"SELECT * FROM product WHERE MATCH (title,description) AGAINST ('$q'%)";
    Вместо $q сделать $q и знак процента % . Т.е. должен искать масаж% , где % - любой набор символов.
     
    fredis69 нравится это.
  5. fredis69

    fredis69 Постоялец

    Регистр.:
    25 окт 2008
    Сообщения:
    84
    Симпатии:
    2
    Вообще не работает, выдает ошибку.

    ОШИБКА:
    PHP:
    Warningmysql_fetch_array() expects parameter 1 to be resourceboolean given in Z:\home\test.ru\www\basic_filling_page\center_block.php on line 322
     
  6. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    там есть документация
     
  7. alex.kirov

    alex.kirov Создатель

    Регистр.:
    18 авг 2010
    Сообщения:
    29
    Симпатии:
    7
    Поддерживаю пост про Сфинс, мы долго парились с поиском, всякие расстояния левеншталя считали. В итоге поставили сфинкс и все стало гораздо проще.

    Сфинкс умеет прикидываться сервером Mysql поэтому кардинально ничего перепысывать не пришлось
     
  8. fredis69

    fredis69 Постоялец

    Регистр.:
    25 окт 2008
    Сообщения:
    84
    Симпатии:
    2
    Кто знает как устанавливать Сфинс ?

    Возникнут проблемы или нет при установки на вертуальный хостинг (тоесть хостинг предоставленный провайдером)?
     
  9. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    про установку читай выше. хостер вряд ли согласится ставить сторонний софт, поэтому лучше арендовать сервер.
     
    fredis69 нравится это.
  10. fredis69

    fredis69 Постоялец

    Регистр.:
    25 окт 2008
    Сообщения:
    84
    Симпатии:
    2
    Всё понятно, спасибо за инфу.
    Буду FULLTEXT-ом насиловать БД.

    А насчет сервера, нехочется переплачивать, я за хостинг сейчас 270руб. в месяц за 5Гб. а за сервер будет подороже
     
Статус темы:
Закрыта.