Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте.
Есть ли возможность настроить полнотекстовый поиск что бы он не искал каждое подходящее слово т.е
в запросе "MySql для чайников" будут найдены все записи соответствующие каждому из слов. Особенно "для" вообще в огромном количестве записей встречается но это не беда можно занести "для" в стоп слова. Но что делать если в базе 700 тыс. записей. и среди них много часто встречающихся слов, например слово "пособие" его уже в чёрный список не засунуть.
При запросе "Математика. Пособие для подготовки к ЕГЭ" будет найдено огромное количество записей. В моём случае
более 50 тыс. что очень сильно отразится на скорости выполнения. Хотелось бы чтобы нашлось ни каждое вхождение слова, а что то более конкретное т.е чем длиней запрос тем меньше результатов поиска, а не на оборот.
Отредактированно Марк (25.08.2010 19:52:05)
Неактивен
На самом деле тут Вы описали две задачки, а не одну.
1. Задачка «убрать часто встречающиеся слова из индекса». Она реализуется
автоматически: если слово встречается больше, чем в половине документов,
оно выкидывается из индекса как обычное стопслово.
2. Задачка «чем более длинный запрос, тем меньше результатов поиска» —
она решается полуавтоматическим способом — смотрите на логический режим
поиска: http://dev.mysql.com/doc/refman/5.1/en/ … olean.html
Неактивен
Да спасибо. Логический режим это хорошо но особо он не помогает к примеру взять обычный поисковый запрос
"Краткий лечебный справочник" на первом месте будут записи содержащие слово справочник потом лечебный и.д. (ни какой релевантности) т.е без спец. символов не обойтись, а от куда я могу знать к какому слову мне поставить + или > , а может я просто чего не знаю?
Неактивен
Не-а, попробуйте AGAINST('"краткий лечебный справочник"') IN BOOLEAN MODE. Обратите внимание на двойные кавычки.
Неактивен
paulus написал:
Не-а, попробуйте AGAINST('"краткий лечебный справочник"') IN BOOLEAN MODE. Обратите внимание на двойные кавычки.
Вот так все же - AGAINST ('"краткий лечебный справочник"' IN BOOLEAN MODE)
Неактивен
ээ.. а я как написал? Надо моноширинным шрифтом, наверное
'"краткий лечебный"'
Неактивен
Скобочка не там, а так всё в порядке
Неактивен
Ах, точно, моя кривая голова. Спасибо за исправление
Неактивен
Зато если пользователь введёт '"справочник краткий лечебный"' результат окажется нулевым.
Попробовал вот так '+краткий +лечебный +справочник' вроде более менее. Всё равно лучше чем автоматический полнотекстовый поиск ни чего нет но использовать его не буду.
Отредактированно Марк (26.08.2010 17:25:27)
Неактивен