powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Тяпничный поиск товаров по набору атрибутов
11 сообщений из 61, страница 3 из 3
Тяпничный поиск товаров по набору атрибутов
    #39369374
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл группировку товаров, то что он в группе товаров Телевизоры\Телевизоры ЖК

Tovar
tov_idtov_name1ТВ Gnusmas 40" FullHD
Category
cat_idcat_name2Диагональ3Разрешение6Телевизор7Телевизор ЖК
Value
val_idcat_idval_name4239"-43"53FullHD86Телевизор97Телевизор ЖК
Attribute
tov_idval_id14151819
...
Рейтинг: 0 / 0
Тяпничный поиск товаров по набору атрибутов
    #39369382
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще подумал, удобнее для выборок так хранить

Tovar
tov_idtov_name1ТВ Gnusmas 40" FullHD
Category
cat_idcat_name2Диагональ3Разрешение6 Группа товаров
Value
val_idcat_idval_name4239"-43"53FullHD86Телевизор96Телевизор ЖК
Attribute
tov_idval_id14151819[/quot]
...
Рейтинг: 0 / 0
Тяпничный поиск товаров по набору атрибутов
    #39370620
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм.. я немного не так использовал Category.

Чуть позже отпишу.
...
Рейтинг: 0 / 0
Тяпничный поиск товаров по набору атрибутов
    #39374210
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Здарова други. Я немного был занят на неделе и задачей не занимался.

По сабжу я не отказываюсь от своих ресёрчей но пока беру паузу.
Ничего пока не готово.

Забегая вперед я хочу сказать что я планировал используя биткарты или хеши
превнести некий дополнительный атрибут в таблицу tovar но при этом дать
положительную (иногда ложно-положительную) вероятность для срабатывания
поискового предиката

Код: sql
1.
WHERE tovar_attributes CONTAINS('Диагональ=39..43 AND ....')


Ложные срабатывания предиката - отсекаются на 2-й фазе фильтрации через
EAV, но я надеюсь что это будет менее чем 3% от общего объема выборки
что само по себе очень круто.

Здесь я могу пойти по ложному пути Паниковского создания движка
для Full Text Search но нет (!) я этого не хочу. FTS слишком крут и избыточен.
Мне хватит и списка атрибутов.

2) Против Диминой модели я не имею ничего против просто у меня таблица категорий
это были категории товаров а не атрибутов.
...
Рейтинг: 0 / 0
Тяпничный поиск товаров по набору атрибутов
    #39374295
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЗабегая вперед я хочу сказать что я планировал используя биткарты или хеши
превнести некий дополнительный атрибут в таблицу tovar но при этом дать
положительную (иногда ложно-положительную) вероятность для срабатывания
поискового предиката

Код: sql
1.
WHERE tovar_attributes CONTAINS('Диагональ=39..43 AND ....')


Не понимаю где ты эти биткарты обрабатывать собрался? На стороне SQL-сервера нет встроенных средств для этого. Тащить их сначала на клиента, как-то алгоритмически обрабатывать, получать набор TOV_ID и дозапрашивать с фильтром по нему тоже сомнительный алгоритм.

Я про биткарты думал. Полностью занести все характеристики товара в биткарту можно и она будет небольшая по размеру.
Можно сформировать биткарту фильтра и сравнить ее со всеми биткартами товаров, тоже не сложно.

Но на двойном выборе начнутся проблемы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
Диагональ
[ ] 10-19"
[x] 20-29"
[x] 30-39"

Разрешение
[ ] HD Ready
[x] Full HD


т.е.
Код: sql
1.
WHERE tovar_attributes CONTAINS('(Диагональ=20-29 OR Диагональ=30-39) AND ....')


Тут надо уже две биткарты фильтра. При совпадении с любой товар считается подходящим.
И чем больше групп с несколькими галками, тем больше карт-фильтров, причем прогрессия геометрическая.
Например 3 категории по 2,3,3 галки дадут 2*3*3 = 18 карт-фильтров.
...
Рейтинг: 0 / 0
Тяпничный поиск товаров по набору атрибутов
    #39374448
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима.

Я-же писал в введении.
Что-бы я здесь хотел обсудить. Возможные алгоритмы и структуры данных
которые помогут ускорить поиск по модели EAV.
Можно - доработки к PG и MySQL. Можно - различные варианты кешей.
Можно - использование С/C++ в стеке LAMP. Текстовый поиск,
деревья, JSON, и все что может быть полезно - приветствуется.
На консистентность кеша и БД можно пока забить. Скорость важнее.

Далее. Про геометрическую прогрессию я ничо не понял. В моём понимании - фасетный
поиск - это просто игра с предикатами. Чем больше юзер накликал - тем больше предикатов
в списке. Там нет места геом-прогрессии или я по другому понимаю саму предметную область.
...
Рейтинг: 0 / 0
Тяпничный поиск товаров по набору атрибутов
    #39374478
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДалее. Про геометрическую прогрессию я ничо не понял.
Думал про биткарты для усовершенствования моей реализации. Она отлично ложится в биткарту, а дальше начинаются описанные проблемы. Хотел выше предложить экзотическое решение на биткартах, потом понял что сложная хрень получится и скорее всего не быстрая.

Идея была такая: каждый бит в карте соответствует характеристике
ХарактеристикаЗначениеДиагональ 10-19"00000001Диагональ 20-29"00000010Диагональ 30-39"00000100Разрешение HD Ready00001000Разрешение Full HD00010000
Каждый товар имеет свою биткарту характеристик
ТоварБиткартаТВ100001001ТВ200001010
Затем по фильтру делается биткарта и сравнивается
Код: plaintext
1.
if(Биткарта товара & Фильтр == Фильтр) товар подходит


но тут возникает проблема с двойным выбором: если пользователь выбрал например как я написал 20044056 то надо сравнивать уже с двумя фильтрами 00001010 и 00001100
Код: plaintext
1.
if(Биткарта товара & 00001010 == 00001010 || Биткарта товара & 00001100 == 00001100) товар подходит


И количество фильтров это произведение количества галок в каждой категории характеристик. В этом примере 1*2 = 2. Т.е. геометрическая прогрессия.

Если ты как-то по другому биткарты хочешь задействовать или фильтр блума, то раскрывай свою мысль.

PS В реализацию фасетного поиска не вникал.
...
Рейтинг: 0 / 0
Тяпничный поиск товаров по набору атрибутов
    #39374488
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё Дима. Я понял свою ошибку. Что-то в исходной постановке неверно. По крайней мере неверно
моё упрощение.

Почитал кое что из публичных материалов (презентаций).

http://flamenco.berkeley.edu/talks/chi_course06_4_23.ppt

Фасет это нечно более сложное и это не тег и не категория. По крайней мере надо еще
это обдумать.

Вобщем беру паузу.
...
Рейтинг: 0 / 0
Тяпничный поиск товаров по набору атрибутов
    #39374560
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. В шахматы играешь?
...
Рейтинг: 0 / 0
Тяпничный поиск товаров по набору атрибутов
    #39374617
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Тяпничный поиск товаров по набору атрибутов
    #39374620
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgm, я вспомнил эту статью. Я еще когда-то читал. Про Редиску. Но спасибо за напоминалку.
...
Рейтинг: 0 / 0
11 сообщений из 61, страница 3 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Тяпничный поиск товаров по набору атрибутов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]