AgelxNash/DocLister

Дополнительный улучшенный поиск по множественным ТВ

Closed this issue · 10 comments

Наткнулся на интересный вариант поиска по целым словам, который отлично подойдет для фильтра по нашим ТВ, в первую очередь.

SELECT * FROM modx_site_tmplvar_contentvalues WHERE REPLACE(value, '||', ' ') REGEXP '[[:<:]]10[[:>:]]'

Отлично ищет строки 4,7,10,11,116 но не строки 100,7,2010

SELECT * FROM modx_site_tmplvar_contentvalues WHERE REPLACE(value, '||', ' ') REGEXP '[[:<:]]197[[:>:]]'

Ищет 197 или 105||197, но не ищет 1197 и 1978||1

Можно потестировать и добавить еще один вариант фильтра для нормальной выборки по множественному тв.

Вопрос практически снят, оно работает нормально и в варианте
SELECT * FROM modx_site_tmplvar_contentvalues WHERE value REGEXP '[[:<:]]197[[:>:]]'
т.е. без замены || на пробелы. А значит можно реализовать через стандартный фильтр regexp https://github.com/AgelxNash/DocLister/blob/master/assets/snippets/DocLister/core/filterDocLister.abstract.php#L170-L172, если эти двойные кавычки не помешают и не сойдут за объявление сниппета. Но все-таки аналог фильтра containsOne (выбор многих из многих) по данному принципу не помешал :)

Интересно, на каком объеме данных, сайты с такими фильтрами начнут забигаться?

В общем-то сейчас есть автозагрузка фильтров, так что можно не пихать в комплектные такую экзотику.

Не такая уж и экзотика, если надо найти размер L, когда в tv size записаны строки

L, XL, XXL
S,L,XL
L|XL||XXL
XL||XXL
XL, XXL

:)

А насчет производительности - всегда можно поставить птичку, что именно использовать для фильтрации. В магазине на 500-1000 товаров особой разницы, я думаю, не будет, а вот точность поиска (чтобы вместе с L не выдавало и все XXL/XL) тут имеет больший приоритет. Для тех же, кто хочет "и много и быстро и точно" - тоже есть свой вариант - прикупить хостинг помощнее :)

Частая практика, такая проблема с размерами и с цветами а это обой магазин с одеждой да и не только

Точно, blue от deepblue он тоже отличит :))))

Так и до фильтрации на PHP в духе дитто дойдем.

Я тоже считаю, что разработчиков нужно сразу направлять в сторону правильной реализации (тот же TagSaver в помощь). А эти полумеры только усугубляют ситуацию, когда проект встает на рельсы.

Да нет тут полумеров на самом деле, хороший базовый функционал получается :) и работает из коробки в eFilter

А сейчас приходиться костыли городить каждый раз в подобной ситуации уже 3 раза делал за последние пол года костыли :)

По уму у нас eFilter чуть ли не единсвенный простой фильтер функциональный и доступный для программеров с не очень большим скилом . Так то понятно что можно все писать с нуля