На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Serafim, fatalist
  
    > Поможите с логикой...
      Пишу поиск. довольно традиционный подход - есть строка,
      я ее разбиваю на слова, а дальше составляю пары-тройки-четверки-и.т.д. и пихаю в один SQL..

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

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

      С другой стороны можно пробовать искать отдельно каждое слово и если находить, то (????даже не знаю, что тогда :blink: )

      Кто может, помогите.. (нет смайлика-попрошайки, к сожалению :D )

      Если я опять неточно выразился, задавайте вопросы, сразу же отвечу, поскольку 24 часа онлайн.
        в базах данных есть встроенный механизм поиска по строковым и текстовым полям - FULLTEXT SEARCH - очень удобный и грамотный подход.
        В последних версиях mysql он очень сильно расширен с помощью директивы IN BOOLEAN MODE - без особого гемороя можно организовать практически любой поиск.
        если заинтересуешься и нужна будет помошь - пиши
        а вообще на форуме была такая тема(про особенности fulltext поиска) - в php и в mysql разделах - можешь еще там посмотреть
          shipbrother, не кинешь ссылочек, где почитать можно? (на мануалы, или учебники, или вообще на форум)....
          Очень уж заинтересовал, а то я делал так:

          генерил строку 0...0, где количество нулей означало количество слов,
          затем организовывал цикл от 0 до (2 в степени количества слов)-1,
          переводил строку 0..0 в десятичную систему, прибавлял единицу,
          переводил в двоичную и смотрел, если там только одна единица,
          то ничего не делал, если более двух, вставлял в SQL..

          Если все это можно организовать автоматически, было бы неплохо, хотя сейчас работает быстро
          (правда всего около 10 записей <_< )
            тээкс, щас посмотрю
            родной мануал на русском - http://dev.mysql.com/doc/mysql/ru/Fulltext_Search.html
            MySQL & Full-text Search - MySQL & Full-text Search
            Русскоязычный FULLTEXT поиск в MYSQL - Русскоязычный FULLTEXT поиск в MYSQL

            я думаю этого хватит, пиши если есть вопросы
            рад буду если тебе это поможет :)
            Сообщение отредактировано: shipbrother -
              shipbrother, спасибо большое!

              Тока жаль, что такие проблемы с кодировкой..
              А вообще идея неплохая, особенно с релевантностью. В точку то, что я хотел, только уже написано :whistle:
                с кодировкой кстати проблем нету, я потом разобрался - если кодировка страницы совпадает с кодировкой базы, то все тип-топ ищется. единственное - падеж не учитывает <_<

                главная проблема в том, что IN BOOLEAN MODE работает только в MySQL 4.0.1 и выше, но если проявить изобретательность - то можно и без него все сделать.

                И еще - Fulltext Search действительно лучше работает с большими объемами текта.
                Цитата
                Для очень малых таблиц распределение слов не отражает адекватно их смысловое значение, и данная модель иногда может выдавать некорректные результаты
                  Ну, малые объемы текста мне не грозят... B)
                  И все же, разве мой поиск сильно уступает встроенному? :unsure:
                  Сообщение отредактировано: Суть Зла -
                    Если есть готовые встроенные средства - лучше пользоваться ими. Как правило, они эффективнее всего и выглядит это стандартизованно. Не нужно нескольких (может десятков) строк своего кода, если можно использовать уже готовое.
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0211 ]   [ 15 queries used ]   [ Generated: 27.04.24, 20:32 GMT ]