Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.240.21] |
|
Сообщ.
#1
,
|
|
|
Пишу поиск. довольно традиционный подход - есть строка,
я ее разбиваю на слова, а дальше составляю пары-тройки-четверки-и.т.д. и пихаю в один SQL.. Проблема в том, что иногда необходимо находить и по одному слову, например строка "авиабилеты Испания" не даст ничего, если где-то в базе будет лежать просто "авиабилеты". С одной стороны можно, конечно, использовать базу заранее заданных слов, но обширность этой базы будет такова, что придется весь словарь русского языка перебивать... С другой стороны можно пробовать искать отдельно каждое слово и если находить, то (????даже не знаю, что тогда ) Кто может, помогите.. (нет смайлика-попрошайки, к сожалению ) Если я опять неточно выразился, задавайте вопросы, сразу же отвечу, поскольку 24 часа онлайн. |
Сообщ.
#2
,
|
|
|
в базах данных есть встроенный механизм поиска по строковым и текстовым полям - FULLTEXT SEARCH - очень удобный и грамотный подход.
В последних версиях mysql он очень сильно расширен с помощью директивы IN BOOLEAN MODE - без особого гемороя можно организовать практически любой поиск. если заинтересуешься и нужна будет помошь - пиши а вообще на форуме была такая тема(про особенности fulltext поиска) - в php и в mysql разделах - можешь еще там посмотреть |
Сообщ.
#3
,
|
|
|
shipbrother, не кинешь ссылочек, где почитать можно? (на мануалы, или учебники, или вообще на форум)....
Очень уж заинтересовал, а то я делал так: генерил строку 0...0, где количество нулей означало количество слов, затем организовывал цикл от 0 до (2 в степени количества слов)-1, переводил строку 0..0 в десятичную систему, прибавлял единицу, переводил в двоичную и смотрел, если там только одна единица, то ничего не делал, если более двух, вставлял в SQL.. Если все это можно организовать автоматически, было бы неплохо, хотя сейчас работает быстро (правда всего около 10 записей ) |
Сообщ.
#4
,
|
|
|
тээкс, щас посмотрю
родной мануал на русском - http://dev.mysql.com/doc/mysql/ru/Fulltext_Search.html MySQL & Full-text Search - MySQL & Full-text Search Русскоязычный FULLTEXT поиск в MYSQL - Русскоязычный FULLTEXT поиск в MYSQL я думаю этого хватит, пиши если есть вопросы рад буду если тебе это поможет |
Сообщ.
#5
,
|
|
|
shipbrother, спасибо большое!
Тока жаль, что такие проблемы с кодировкой.. А вообще идея неплохая, особенно с релевантностью. В точку то, что я хотел, только уже написано |
Сообщ.
#6
,
|
|
|
с кодировкой кстати проблем нету, я потом разобрался - если кодировка страницы совпадает с кодировкой базы, то все тип-топ ищется. единственное - падеж не учитывает
главная проблема в том, что IN BOOLEAN MODE работает только в MySQL 4.0.1 и выше, но если проявить изобретательность - то можно и без него все сделать. И еще - Fulltext Search действительно лучше работает с большими объемами текта. Цитата Для очень малых таблиц распределение слов не отражает адекватно их смысловое значение, и данная модель иногда может выдавать некорректные результаты |
Сообщ.
#7
,
|
|
|
Ну, малые объемы текста мне не грозят... B)
И все же, разве мой поиск сильно уступает встроенному? |
Сообщ.
#8
,
|
|
|
Если есть готовые встроенные средства - лучше пользоваться ими. Как правило, они эффективнее всего и выглядит это стандартизованно. Не нужно нескольких (может десятков) строк своего кода, если можно использовать уже готовое.
|