Алгоритм поиска, интернет-магазин

интернет программирование поиск магазин база данных

Подскажите, пожалуйста, наиболее грамотный алгоритма поиска.
Музыкальный магазин, имеется база товаров. Каждый товар имеет бренд и модель, у части товара есть ещё и серия.

Примечание:
Barbooo, мне сам алгоритм нужен...

Примечание:
alex.hustle, в том то и дело, что запросы типа WHERE `model` = RG120 не подойдут, уж сильно строгое сравнение.
В базе у каждого товара есть поле brand, series и model. А человек может ввести в поиск всё, что угодно. например только модель, только серию или только бренд. а может и вообще только часть названия модели

Примечание:
Артёмка, да да да, до того, чтобы разбивать слова я и сам дошёл))
но заинтерисовала такая вещь на одном сайте: если ввести в поиск rg123 (модель гитары Ibanez, такой модели нет), то он выдаёт 3 гитары модели rg120. вот как такое сделать не могу догнать... хотя это не главное

У этого способа с разбиванием на пробелы есть огромный минус...
Например есть процессор, модель которого POD XT Live Guitar Multi Effects Pedal. Вводим это дело в поиск. И в результате будут выведены все товары, в бренде, серии или модели которых встречается хотя бы одно из слов запроса (POD, XT, Live, Guitar (!), Effects или Pedal)..... :)

Примечание:
alex.hustle, спасибо, интересные мысли
Ответы:
Яндекс маркет! Идеальный поиск...
вы что, руками пишите не только магазин, но базу данных к нему? В стандартной базе как работает поиск знать не обязательно, достаточно уметь правильно составлять запросы.
Разбить поисковый запрос по пробелам или знакам препинания на слова, а затем искать товары у которых эти слова в качестве подстроки встречаются в названии, бренде, модели или серии. Будут они встречаться во всех этих атрибутах или в одном, каждое слово будет встречаться или одно - это Вам решать.
И использовать для поиска лучше всего какой-нибудь поисковый движок, а не базу данных.
Можно ввести релевантность результата поиска, т.е. соответствие поисковому запросу. Для оценки релевантности можно взять, например, количество слов запроса, которое встретилось в каком-либо из атрибутов товара. Ну и, соответственно, выводить наиболее релевантные результаты. Например, если в имени модели встретились все слова POD, XT, Live, Guitar, Multi, Effects, Pedal, то релевантность такого результата поиска будет равна 7, а если только Guitar, Pedal - то 2. Это очень простой пример оценки релевантности. Для более сложной можно, например, использовать расстояние Левенштейна. Тогда можно будет находить модель rg120 при поиске rg123.
Думаю, эти способы реализованы в каких-либо поисковых движках, достаточно найти их и разобраться, как применить для своей поисковой системы.
во первых можно помочь человеку не делать неправильных запросов - вместо эдитбоксаиспользовать листбокс, с заранее введенным списком существующих моделей.
во вторых нужно воспользоваться нечетким поиском, алгоритм которого и нужно продумать в соответствии с вашей предметной областью. Например, в дополнении к таблице с гитарами, добавить таблицу ошибок, с которой хранить варианты набора человеком каждой из гитар.


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.