Comments 22
Интересно посмотреть на реализацию сортировки, напишите, пожалуйста.
А в php стало так принято один action контроллера раздувать на 50 строчек?
Я в курсе о принципе DRY для контроллеров, но старался показать решение задачи наиболее наглядно. Так то формирование запроса к ES следовало бы вынести в отдельный метод.
А суперглобалы зачем в контроллер пихаете? у вас же есть няшный Request. Вообще «для наглядности» — простая отговорка. С классом-репозиторием было бы даже нагляднее.
Там прямо под кодом автор указал:
Если уж к _GET придираетесь, то почему не написали про отстуствтие проверки что filters — массив, что underscore в перемешку с camesCase это несоответствие стандартам и, наконец, про неправильные отступы?
Статья годная, надо будет писать интернет магазин с таким функционалом — может пригодиться как один из вариантов решения.
для наглядности использую $_GET, но вы используйте Request
Если уж к _GET придираетесь, то почему не написали про отстуствтие проверки что filters — массив, что underscore в перемешку с camesCase это несоответствие стандартам и, наконец, про неправильные отступы?
Статья годная, надо будет писать интернет магазин с таким функционалом — может пригодиться как один из вариантов решения.
Неправильные отступы, камелькейс и нижнее подчеркивание и прочее фиксится при помощи csfixer, да и это мелочи. А вот использование суперглобальных переменных (а можете поверить, подавляющее большинство начинающих разработчиков, а эта статья годна только для них, будут бездумно копировать именно такой вариант) убивает на корню возможность красиво покрыть интеграционными тестами контроллер, да и с таким подходом можно было бы вообще выкинуть Symfony и писать на plain-php.
ИМХО если уж писать туториал для новичков, стоит делать по best practice с разьяснениями что и зачем, тут же я вижу набор из примеров в сети слепленный вместе в кашу на скорую руку.
ИМХО если уж писать туториал для новичков, стоит делать по best practice с разьяснениями что и зачем, тут же я вижу набор из примеров в сети слепленный вместе в кашу на скорую руку.
Благодарю вас за ваш отзыв. В момент написания статьи не посчитал важным эту дырку, однако мнения читателей показывают, что это важно, посему обработчик формы фильтра переписал на симфонивский Request. Переменные внутри него назвал единообразно по camelCase.
И я по своей святой наивности надеюсь, что код отсюда не будет бездумно копироваться. Иначе, кому нужны best practice и объяснения?
И я по своей святой наивности надеюсь, что код отсюда не будет бездумно копироваться. Иначе, кому нужны best practice и объяснения?
Интересно, а есть ли возможность, имея 3 значения 2,68; 2,7; 2,71 аггрегировать их в 2,7 средствами движка?
или
Есть характеристика товаров
Intel core i5-352
Intel core i5-1234
proЦЦessor интел core i5-4321
аггрегировать в одну характеристику core i5?
или
Есть характеристика товаров
Intel core i5-352
Intel core i5-1234
proЦЦessor интел core i5-4321
аггрегировать в одну характеристику core i5?
ArFeRR чуть чуть не потеме, в чем схему рисовали? приятная картинка.
«Intel core i5-352» можно написать в разном регистре — «Intel core i5-352», «Intel Core i5-352», «INTEL CORE i5-352»
Как с этим боретесь?
Как с этим боретесь?
Подключайте анализатор. Или при записи в базу (следовательно индексации) делайте это по какому-то договору.
Обычные анализаторы разбивают текст на слова и индексируют все слова. Тут же надо чтобы строка анализировалась как одно слово, только предварительно приводилось к одному регистру. Но анализатор lowercase тут не подойдет т.к. все фасеты будут в нижнем регистре «intel core i5-352», это не красиво. Какой анализатор тут подойдет?
а что если для фасетов все записывать по одному алгоритму, а индексировать друго поле, куда будет заноситься значение по другому алгоритму?
Несмотря на примечание автора, тип должен быть nested. В примере ArFeRR, ему просто повезло, что у разных свойств были неповторимые значения. У меня были несколько свойств типа да/нет/пусто. Это была катастрофа. По одному «нет» выбирались все объекты, у которых «нет» было хоть в каком-то свойстве.
подробное объяснение на примере.
подробное объяснение на примере.
Спасибо за статью. Для полноты понимания, помог бы итоговый вид класса продукта. Есть возможность прикрепить?
Подскажите кто нибудь как на этой структуре для каждого значения вывести рядом количество товаров, которые относятся к этому значению, причем относительное (имеется ввиду с "+" к числу товаров по выбранным значениям), к примеру как на этом сайте: hotline.ua/computer/noutbuki-netbuki/26221-858-880?
Буду очень благодарен!
Буду очень благодарен!
Sign up to leave a comment.
Делаем простейший фильтр по свойствам товаров с помощью ElasticSearch на Symfony2