Эта тема на forum.dklab.ru


Severus: быстрый поиск вхождений строки в массиве строк
Здравствуйте! Возникла необходимость прикрутить быстрый поиск на AJAX.
Есть массив с названиями книг размером от 500 до 5000 элементов. К примеру:

Кавказский пленник,
Маленькие трагедии,
Медный всадник,
Пиковая дама,
Большие трагедии

Когда пользователь вводит первые буквы названия (он может его точно и не знать), допустим, он ввёл буквы "траг".
То мне нужно ему вернуть названия книг "маленькие трагедии" и "большие трагедии". Пример работы - поиск по товарным позициям в магазине euroset.ru.

Я представляю как это решается что называется в лоб: в цикле обходим массив и для каждого элемента пытаемся найти вхождение подстроки.
Если совпадение есть, то сохраняем в массив с результатами. Обход может быть закончен раньше, если результатов слишком много.

Я сомневаюсь в целесообразности городить более хитрые "академические" алгоритмы поиска.
Если кто сталкивался с подобными вещами, то не посоветуете как подступиться к этому?

Или решать в лоб, а если результаты работы по времени не удовлетворят на заданных размерах массива, то уже только потом что называется "идти в библиотеку за умными книгами"?
bæv:
Есть массив с названиями книг размером от 500 до 5000 элементов.
— а массив откуда берётся?
Просто если названия книг в базе данных хранятся, то лучше средствами самой базы и искать — она для этого специально приспособлена.
Anonymous:
Ну да, всё это добро в виде справочника в CMS-ке лежит.
Просто думалось, что если закешировать и делать всё средствами PHP, то на малых объёмах данных будет пошустрее, чем СУБД дёргать.

Спасибо, попробую и так и так )

Эта тема на forum.dklab.ru