|
|
|
| Здравствуйте, реализовал систему поиска по доске объявлений, с использованием индекса FULLTEXT (спасибо Вашей второй книге :). У меня возникают вот какие вопросы:
1) Почему поиск, основанный на индексе FULLTEXT называется полнотекстовым?
2) Возможно ли использование стандартных метасимволов в ключевых словах: ? - для одного символа и * для нескольких символов.
3) Как правильно выбрать вид поиска по базе данных, т.е. в каких ситуациях нужно использовать LIKE, REGEXP и FULLTEXT?
4) Что необходимо написать в инструкции для пользователя? Вот начало:
Поисковая фраза может состоять из одного или нескольких слов, разделенных пробелами
Максимальная длина поисковой фразы - 64 символа
Максимальная длина слова - 4 символа
Заранее спасибо за ответ | |
|
|
|
|
|
|
|
для: antf
(08.07.2005 в 10:35)
| | Для начала прочитай в справке по MySQL про полнотекстовый поиск и тебе многое станет ясно само-собой.
Полнотекст бывает двух видов в простом режиме и режиме IN BOOLEAN MODE. Как раз во втором и можно указывать подстановочные знаки, но он работает только с версией 4.0.1 и выше. В простом поиске присутствует порого 50% по умолчанию, то есть если искомое слово присутствует в 50% найденных записей то считается что это стоп слово и ничего найдено не будет. В режиме IN BOOLEAN MODE такого нет, там можно самому управлять результатами поиска. В общем прочти хэлп. | |
|
|
|
|
|
|
|
для: antf
(08.07.2005 в 10:35)
| | 1) Потому что поиск основан на реливантности, т.е. фраза "красные арбузы" сработает на каждый из текстов
"красные, красные арбузы"
"красные арбузы"
"красные арбузы продаются на рынке"
"красные, но гнилые арбузы"
"красные, но гнилые арбузы продаются на рынке"
"красные победили"
"хочу арбузов"
но результаты будут отсортированы в том порядке, котором я привёл, чем больше подходит фраза, тем выше располагается результат. Кроме того, один индекс позволяет осуществлять поиск по всем столбцам (если это индексы по всем столбцам), в отличие от других средств поиска, которые должны перебирать каждый столбец.
2. В стандартном полнотекстовом поиске нет, но вы можете прибегнуть к так называемому логическому режиму, в этом режиме допускается использование символа *
<?php
mysql> SELECT name FROM products
-> WHERE MATCH (name, description)
-> AGAINST ('Процеc*' IN BOOLEAN MODE);
?>
|
Этот поиск сработает и на слово Процесс и на Процессор
3. К ограничению полнотекстового поиска относят то, что он работает только с таблицами типа MyISAM, поэтому с другими таблицами его применить не удасться и в них потребуется использование операторов LIKE, если достаточно символов заменителей % и _ и REGEXP, если требуются полноценные регулярные выражения. Часто прибегают к REGEXP когда требуется поиск фраз меньше 4 символов.
4) Только фразу
Максимальная длина слова - 4 символа
|
не забудьте заменить на
Минимальная длина слова - 4 символа
|
Хорошо, если вы приведёте пример того, что необходимо ввести и что получит пользователь, а что вводить нельзя, например как у нас в поиске http://www.softtime.ru/forum/srchform.php?id_forum=3 | |
|
|
|