Denixxx
Мой дом здесь!
- Регистрация
- 7 Фев 2014
- Сообщения
- 244
- Реакции
- 216
- Автор темы
- #1
Кто как решал проблему поиска на своём сайте с учетом русской морфологии?
Я сделал 2 варианта:
1. Полнотекстовый поиск
Недостатки:
— менее 4 букв в слове не ищет;
— русская морфология почти никакая: «жесткий диск»не найдёт если задано «жесткие диски»
— сортировка вывода неадекватная;
— работает только на MyISAM
Достоинства:
— просто и хоть что-то находит по неточному соответствию.
2. Через LIKE — чтобы найти хоть что-то в слове из 3 букв.
Недостатки:
— морфологии никакой, только точное соответствие;
— при большом количестве записей тормозит;
— нет релевантности
Достоинства
— ищет и по 2-м и по 3-м буквам
Чего мне не надо: разные расширения типа Сфинкс и пр.
Потому что поиск в составе движка и может применяться на разных хостингах и в разных условиях.
Как эту задачу решали Вы? Поделитесь, буду благодарен.
Я сделал 2 варианта:
1. Полнотекстовый поиск
Код:
SELECT `id` FROM `items` WHERE MATCH(`name`,`short`,`full`) AGAINST('".$searchquery."')
— менее 4 букв в слове не ищет;
— русская морфология почти никакая: «жесткий диск»не найдёт если задано «жесткие диски»
— сортировка вывода неадекватная;
— работает только на MyISAM
Достоинства:
— просто и хоть что-то находит по неточному соответствию.
2. Через LIKE — чтобы найти хоть что-то в слове из 3 букв.
Код:
SELECT `id` FROM `items` WHERE (`name` LIKE '%".$searchquery."%' OR `short` LIKE '%".$searchquery."%' OR `full` LIKE '%".$searchquery."%');
— морфологии никакой, только точное соответствие;
— при большом количестве записей тормозит;
— нет релевантности
Достоинства
— ищет и по 2-м и по 3-м буквам
Чего мне не надо: разные расширения типа Сфинкс и пр.
Потому что поиск в составе движка и может применяться на разных хостингах и в разных условиях.
Как эту задачу решали Вы? Поделитесь, буду благодарен.