arbuzmaster
17.10.2016 - 20:05
Подскажите пожалуйста, каков правильный алгоритм поиска по БД (21 000 записей) в режиме online, т.е. - начинаю набирать слово и сразу же появляются предварительные результаты?
Мое видение:
1. отправляем AJAX запрос к php по событию onchange в input
2. В php проверяем - если буковок больше 3-х то начинаем искать в БД при помощи fulltext(MyISAM), иначе ничего не делаем.
3. Тащим из базы все записи где есть эти 4 буквы (вот здесь вопрос - стоит ли тащить все или как то это делается по другому? )
4. Выводим их в списке select под input (пока не знаю как это делается, возможно не так?)
5. По выбору из select - выводим на страницу
_____________
Мой первый сайтикПосмотри на свой XBMC под другим углом
Игорь_Vasinsky
17.10.2016 - 20:15
jquery autocomplete
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Valick
17.10.2016 - 20:19
смотря, что ты делаешь, если "опережающий ввод", то нет, если полнотекстовый поиск, то почти так
1 и 2 Количество букв проверяй сразу в браузере.
3 не все, а например самые свежие или самые популярные с лимитом например 30 поисков и процент релевантости тоже можно ограничить, тут нюансов много.
_____________
Стимулятор ~yoomoney - 41001303250491
arbuzmaster
17.10.2016 - 20:36
Спасибо большое! Пойду изучать - первое (jquery autocomplete) и второе (полнотекстовый поиск)! Больше склоняюсь ко второму варианту, но пока не могу понять как вывести результаты в input (похоже придется объединять оба в один), думаю разберусь!
_____________
Мой первый сайтикПосмотри на свой XBMC под другим углом
arbuzmaster
18.10.2016 - 22:44
Все вроде нашёл, собрал в кучу (jquery autocomplete,полнотекстовый поиск ) - В общем получилось примерно
так
_____________
Мой первый сайтикПосмотри на свой XBMC под другим углом
Valick
18.10.2016 - 23:33
arbuzmaster, не получилось
в поиске я набираю "кам" ни одной КАМеры, зато всякого .... полные штаны, далее нажимаю найти, и мне пишет что "по вашему запросу ничего не найдено"
приехали
P.S. автокомплит, он же опережающий ввод, должен работать с первой буквы
_____________
Стимулятор ~yoomoney - 41001303250491
arbuzmaster
19.10.2016 - 11:45
Цитата (Valick @ 18.10.2016 - 23:33) |
arbuzmaster, не получилось
в поиске я набираю "кам" ни одной КАМеры, зато всякого .... полные штаны, далее нажимаю найти, и мне пишет что "по вашему запросу ничего не найдено" приехали
P.S. автокомплит, он же опережающий ввод, должен работать с первой буквы |
Да действительно если вводить только "кам" то выдает какую то ерунду, но если добавить еще "е"("каме") то выводит все записи с камерами, как исправить не знаю?
_____________
Мой первый сайтикПосмотри на свой XBMC под другим углом
Valick
19.10.2016 - 12:01
1 Всё скорее всего от невнимательности, по умолчанию полнотекстовый поиск исключает из результата выборку результат которой 50% и более от общего числа строк. Очень часто такое случается при экспериментах с ПП при маленькой БД. Там много еще "мулек", но надо себя заставить читать внимательнее и целиком.
2 Автокомпликт, должен предлагать варианты уже с первой введённой буквы, например я ввожу букву "к", а он мне "камера", "курятник", "кастрюля", но слова эти должны быть основаны на серьёзной статистике, а не взяты с потолка из словаря.
Я хочу сказать что поиск и всё что с ним связано (в том числе и эргономика) это предельно сложно. Ведь никому не нужен поиск, который постоянно "не угадывает" и искомый результат выдаёт где-нибудь на 20-той странице.
_____________
Стимулятор ~yoomoney - 41001303250491
arbuzmaster
19.10.2016 - 13:48
arbuzmaster
19.10.2016 - 20:15
Цитата (Valick @ 19.10.2016 - 12:01) |
1 Всё скорее всего от невнимательности, по умолчанию полнотекстовый поиск исключает из результата выборку результат которой 50% и более от общего числа строк. Очень часто такое случается при экспериментах с ПП при маленькой БД. Там много еще "мулек", но надо себя заставить читать внимательнее и целиком.
|
Прочитал внимательно и целиком на MySQL.ru и понял, что при вводе "кам" ничего находиться не будет, так как
Цитата |
Для разбивки текста на слова MySQL использует очень простой синтаксический анализатор. ``Словом'' является любая последовательность символов, состоящая из букв, чисел, знаков `'' и `_'. Любое ``слово'', присутствующее в стоп-списке (stopword) или просто слишком короткое (3 символа или меньше), игнорируется. |