Фасетно търсене. PINQ - запитвани набори от данни
( "заявка": ( "и": [ ( "условия": ("държава": ["be", "fr"])), ( "условия": ("категория": ["книги", "филми" "]) ) ] ))
За броячи можем да използваме вградени агрегати от Elasticsearch. Всеки от двата аспекта се съхранява като едно поле в индекса, така че можем да използваме агрегиране на термини във всяко от тези полета. Агрегирането ще върне брояч за стойността на това поле.
( "заявка": ( "и": [ ( "условия": ("държава": ["be", "fr"])), ( "условия": ("категория": ["книги", "филми" " "]) ) ]), "агрегации": ( "държави": ( "условия": ("поле": "държава")), "категории": ( "условия": ("поле": "категория" ) ) ) )
Ако изпълните тази заявка, ще забележите, че броячите са деактивирани. Двете неизбрани държави, Португалия и Бразилия, имат брояч 0. Въпреки че има действителни резултати, ако искаме да ги изберем (поради ORinner edge). Това се случва, защото по подразбиране Elasticsearch извършва своите агрегации върху набора от резултати. Това означава, че ако изберете Франция, филтрите на другата държава ще имат резултат 0, тъй като наборът от резултати съдържа само елементи от Франция.
За да коригираме това, трябва да кажем на Elasticsearch да извърши агрегирането на целия набор от данни, като игнорира заявката. Можем да направим това, като дефинираме нашите клъстери като глобални.
( "заявка": ( "и": [ ( "условия": ("държава": ["be", "fr"])), ( "условия": ("категория": ["книги", "филми" " "]) ) ]), "агрегации": ( "всички_продукти": ( "глобално": (), "агрегации": ( "държави": ( "условия": ("поле": "държава")), " категории": ( "термини": ("поле": "категория") ) ) ) ) )
Ако просто направихме това, нашите броячи винаги ще бъдат едни и същи, защото те винаги ще разчитат на целия набор от данни, независимо от нашите филтри. Нашите единици трябва да станат малко по-сложни, за да работи това, трябва да добавим филтри към тях. Всяко агрегиране трябва да разчита на набор от данни с всички приложени филтри, с изключение на своя собствен. По този начин агрегирането по акаунт във Франция разчита на набора от данни с приложен филтър за категория, но не и филтъра по държава:
( "заявка": ( "и": [ ( "условия": ("държава": ["be", "fr"])), ( "условия": ("категория": ["книги", "филми" " "]) ) ]), "агрегации": ( "всички_продукти": ( "глобално": (), "агрегации": ( "държави": ( "филтър": ( "и": [ ( "условия": ( "категория": ["книги","филми"]) ) ]), "обединения": ( "филтрирани_страни": ( "термини": ("поле": "държава") ) ) ), "категории": ( "filter": ( "and": [ ( "terms": ("country": ["be","fr"]) ) ]), "aggregations": ( "filtered_categories": ( "terms": ( "поле": "категория") ) ) ) ) ) ) )
( "взе": 153, "timed_out": невярно, "_shards": ( "общо": 5, "успешно": 5, "неуспешно": 0), "попадения": ( "общо": 3, "max_score ": 0, "посещения": ["..."]), "агрегации": ( "all_products": ( "doc_count": 21, "филтрирани категории": ( "doc_count": 13, "categories": ( "doc_count_error_upper_bound": 0, "sum_other_doc_count": 0, "buckets": [ ( "key": "films", "doc_count": 6), ( "key": "music", "doc_count": 4), ( "key": "книги", "doc_count": 3 ) ] ) ), "filtered_countries": ( "doc_count": 15, "countries": ( "doc_count_error_upper_bound": 0, "sum_other_doc_count": 0, "buckets": [ ( "key": "fr", "doc_count": 6), ( "key": "br", "doc_count": 4), ( "key": "be", "doc_count": 3), ( "key": "pt", "doc_count": 2 ) ] ) ) ) ) )
Yii2 рамка
$terms = QueryHelper::terms("categories.name" , "my category" ) ; $nested = QueryHelper:: вложен ("string_facet" , QueryHelper:: филтър ([ QueryHelper:: термин ("string_facet.facet_name" , [ "value" => $id , "boost" => 1 ] ), QueryHelper:: термин ("string_facet.facet_value" , [ "value" => $value , "boost" => 1 ] ) , ] ) ) ; $filter = QueryHelper::should ($nested) ;Съвременните хора се опитват да отделят все по-малко време за пазаруване. Бавните продуктови каталози гонят клиентите, магазинът губи клиенти и част от печалбата си. Направете своя онлайн магазин по-привлекателен с технологиите фасетиран Фасетиран – т.е. предварително зададени.Търсене. Създавайте фасетирани индексии значително ускоряват търсенето на продукти и работата на целия каталог.
Забележка:Механизмът за фасетно търсене е достъпен от версия 15.0.1 на модула Информационни блоковеи интегриран с компонент Компонент- това е програмен код, проектиран във визуална обвивка, който изпълнява специфична функция на модул за показване на данни в публичната част. Можем да вмъкнем този блок от код в страниците на уебсайта, без да пишем директно никакъв код. Интелигентен филтър Компонентът подготвя филтър за избор от информационния блок и показва филтърна форма за филтриращи елементи. Компонентът трябва да бъде свързан преди компонента за показване на елементи от каталога, в противен случай списъкът с елементи няма да бъде филтриран. Компонентът е стандартен, включен в дистрибуцията на модула и съдържа три шаблона: .по подразбиране, визуален_хоризонталенИ визуален_вертикален. (Последните два шаблона не се поддържат, остават за поддържане на съвместимост.)
Във визуалния редактор компонентът е разположен по пътя Съдържание > Каталог > Интелигентен филтър.
Компонентът принадлежи към модул Информационни блокове.
Научете повече за фасетното търсене |
---|
Да разгледаме един пример:
Отиваме в онлайн магазина и избираме във филтъра, че имаме нужда от червена тениска:
|
Да творим фасетирани индексив няколко прости стъпки:
Трябва ли фасетните индекси да бъдат пресъздадени?
Фасетираните индекси се пресъздават автоматично или трябва да ги пресъздадете ръчно, в зависимост от извършените действия:
|
Фасетираното търсене подобрява производителността на продуктовия каталог. За да го използвате трябва:
- Създаване на фасетирани индекси за продуктов каталог;
- Следете за известия относно необходимостта от ръчно пресъздаване на индекси.
Вградено фасетно търсенеВграден в продуктаФасетното търсене, вградено в онлайн магазина - вътрешно търсене - работи бързо в много отношения и не натоварва системата.
На клиента незабавно се представят предварително подготвени резултати от търсенето - за всяка комбинация от параметри - аспект. Системата изчислява фасетите за продукт предварително - всички възможни пресичания на тези свойства във филтъра. След това тези готови комплекти за търсене се издават на клиентите. Защо сайтът не се зарежда? В момента, в който резултатът се издава на клиента, не се извършват изчисления, тъй като резултатът вече е готов. Фасет за нов продукт се създава веднага след добавянето му към търговския каталог. Търсенето се индексира автоматично на базата на нови продукти и нови свойства. Ползи за клиентите Предимства на фасетното търсенеВашият клиент намира продукта много бързо, лесно си играе с настройките на филтъра. Клиентът не чака и получава резултати моментално. Скоростта на търсене не зависи от броя на артикулите в каталога.
Вашият клиент намира продукта много бързо чрез последователно стесняване на заявката за търсене. И на всяка стъпка моментално получава резултати - списък с продукти при поискване. Не е нужно да чака молбата му да бъде обработена. Защото системата е изчислила предварително всички възможни опции и просто издава празни бланки. Постепенно онлайн магазинът показва все по-малко продукти като резултати. Тези продукти се доближават все повече и повече до заявката на купувача. Интерактивност и многоизмерност Изборът на продукт за купувач е като игра. Клиентът влачи параметри (цена, тегло), превключва свойства (цвят, размер), задава допълнителни условия (марка, материал, вкус и т.н.) - и системата веднага пренарежда резултатите. В този случай може да има толкова персонализирани параметри, колкото желаете - техният брой не влияе върху скоростта на генериране на резултата. Удобство и приветливост С фасетната навигация дори неопитен потребител може лесно да избере продукт в магазина. Манипулирането на инструменти за търсене е много удобно. Освен това системата подсказва на купувача всички параметри, по които може да избере продукт. Магазинът, така да се каже, демонстрира на клиента основните свойства на продукта. Клиентът не чака заявката да бъде обработена! Скорост на търсене Скоростта на търсене има значениеСкоростта на търсене влияе върху броя на направените покупкиНищо не дразни клиента повече от това да има проблеми с намирането на продукти на вашия уебсайт. Клиентът ще тръгне към други магазини, ако търси твърде дълго. Дори ако вашият магазин съдържа голям избор от продукти и много инструменти за тяхното филтриране. Клиентът може да не получи резултати от заявката.
Защо търсенето е толкова бавно? Скоростта на работа е впечатляваща!Резултатите от теста за версия 15.0 на продукта върху три категории каталози, съдържащи 500 хиляди артикула, показаха, че в сравнение с предишните версии:
Бързо дори без "фасет"!Продуктът непрекъснато работи за ускоряване на самите компоненти на каталога. Услугата „Скорост на сайта“ показва значително увеличение на скоростта от версия на версия!Реконструкция Извършва се постоянна реконструкция на индексирането и резултатите от търсенето. Алгоритъмът за индексиране на съдържание се преработва и ускорява. Качеството на представяне на резултатите от търсенето е подобрено - по-специално, "шумът" е намален. Разработчиците планират да показват персонализирани данни за текущия клиент в резултатите от търсенето. За разработчици: Прозрачност на API
„Facet“ е прозрачен за API„Фасетът“, вграден в продукта, е прозрачен за API. Това е основната част от API на информационните блокове. Следователно използването му не изисква допълнителни усилия за разработчиците. Също така няма нужда от редизайн на сайтове.
Пълна интеграция с интелигентен филтър Сега, когато правите настройки в административната част, за свойствата на продукта можете не само да посочите дейността - дали да участва или не в смарт филтъра. Като предадете свойство на интелигентния филтър, можете веднага да изберете как да ги показвате. Под каква форма трябва да се показва имотът на клиентите: бутони, размери, плъзгачи, падащи списъци, списъци с избор на цвят и др.
Интелигентният филтър вече изглежда по-красив. Разработчиците могат лесно да персонализират и допълнително да персонализират външния му вид. Интелигентен филтър или фасетно търсене е филтър по продуктова категория, който може да се види в големи онлайн магазини и същия Yandex.market. Помага за последователно сортиране на продукти със свойствата, от които се нуждае потребителят, като елиминира всичко ненужно. Това е много удобна опция, която ви позволява бързо да намерите желания продукт или материал на сайта. И така, нека да преминем директно към инсталирането и конфигурирането на модулите, от които се нуждаем Първо ще трябва да изтеглим и инсталираме следните модули: API за търсене, API за търсене в база данни, API за обекти и изгледи. На страницата с модули разрешаваме:
Създаване на сървър за търсенеХайде да отидем до Конфигурация > Търсене и метаданни > API за търсене(/admin/config/search/search_api) и щракнете Добавете сървър. Създаване на индексХайде да отидем до Конфигурация > Търсене и метаданни > API за търсене(/admin/config/search/search_api), щракнете Добавете сървър (Добавете индекс).
В следващата форма, която се отваря Филтри(работен процес) Оставих всичко по подразбиране, отидете на раздела Преглед (Статус), и натиснете Индексирайте сега (Индексирайте сега). Създаване на страница за търсенеХайде да отидем до Структура > Изгледии щракнете Добавете нов изглед (Добавете нов изглед). На този етап сме готови с настройката на изгледа, сега нека преминем директно към филтъра за аспекти. A/search_api_ranges.module +++ b/search_api_ranges.module @@ -144.11 +144.8 @@ функция search_api_ranges_minmax($variables, $order = "ASC") ( // в противен случай нашият min/max винаги ще бъде равен на въведеното от потребителя. $filters = &$query->getFilter()->getFilters(); foreach ($filters as $key => $filter) ( - - // Проверка за масив: филтрите в стар стил са обекти, които можем да пропуснем. - if (is_array) ($filter)) ( - if ($filter == $variables["range_field"] || ($filter != $variables["range_field"] && $filter == "")) ( - $ current_filter = $filters [$key]; + if(isset($filter->tags) && is_array($filter->tags))( + if(in_array("facet:".$variables["range_field"], $ filter->tags ))( unset($filters[$key]); ) ) Корекция на JQuery UI Slider: настройка на пренасочванеВъв версия 7x-1.5 на модула се сблъсках с факта, че ако джаджата на плъзгача се намираше на страница, различна от страницата за търсене, тогава след промяна на ценовия диапазон посоката беше пренасочена към текущата страница, а не към страницата за търсене страница.
след което проблемът беше решен. Фасетираната навигация е проблем за всички сайтове за електронна търговия. Прекалено големият брой страници, които се използват за различни вариации на един и същи елемент, представлява заплаха за ефективността на търсенето. Това може да повлияе негативно върху SEO и потребителското изживяване. Експерти от блога SEO Hacker обясниха какво представлява фасетната навигация и как да я подобрим. Фасетна навигация: ОпределениеТози тип навигация обикновено се намира в страничните ленти на сайтовете за електронна търговия и съдържа филтри и аспекти - параметри, които потребителят конфигурира по желание. позволява на клиентите на онлайн магазина да търсят продукта, който искат, като използват комбинация от атрибути, които ще филтрират продуктите, докато потребителите намерят това, от което се нуждаят. Фасетите и филтрите са различни един от друг. Ето разликата:
Потенциални проблемиВсяка възможна комбинация от аспекти има свой собствен уникален URL адрес. Това може да причини някои проблеми от гледна точка на SEO. Ето основните от тях:
С нарастването на вашия сайт расте и броят на дублиращите се страници. Входящите връзки може да водят до различни дублирани страници. Това намалява стойността на връзките и ограничава способността на страниците да се класират. Вероятността от канибализация на ключови думи също се увеличава. Няколко страници се опитват да се класират за едни и същи ключови думи, което води до по-малко последователни и по-ниски класации. Този проблем може да бъде избегнат, ако всяка ключова дума е насочена само към една страница. Фасетирани решения за навигацияКогато избирате решение за фасетна навигация, помислете за крайната си цел: увеличаване на броя на страниците, които индексирате, или намаляване на броя на страниците, които не искате да индексирате. Ето някои решения, които могат да бъдат полезни за вас: AJAXАко използвате AJAX, нов URL адрес не се създава, когато потребителят кликне върху аспект или филтър. Тъй като няма да има уникални URL адреси за всяка възможна комбинация от аспекти, проблемът с дублираното съдържание, канибализацията на ключови думи и напразните разходи за индексиране е потенциално елиминиран. AJAX може да бъде ефективен само преди стартирането на сайта за електронна търговия. Не се използва за решаване на проблеми на съществуващи ресурси. Този метод също изисква определени разходи от ваша страна. noindex тагТагът noindex се използва, за да каже на ботовете да изключат конкретна страница от индекса. По този начин няма да се показва в резултатите от търсенето с Google. Това помага за намаляване на количеството дублирано съдържание, което се появява в индекса и резултатите от търсенето. Това няма да реши проблема с бюджета за обхождане, защото ботовете все още ще посещават страницата ви. Освен това не помага за разпределянето на стойността на връзките. Атрибутът rel=canonicalС този атрибут казвате на Google, че имате една основна предпочитана страница за индексиране и класиране, а всички останали версии на съдържанието от тази страница са просто дубликати, които не е необходимо да бъдат индексирани.
София Ибрагимова Маркетинг на съдържание Ако една и съща страница на вашия сайт може да бъде достигната от множество URL адреси, роботите за търсене ще третират всеки URL като отделна страница. Ботовете ще решат, че съдържанието на вашия сайт не е уникално и това ще се отрази негативно на класирането и ще намали позицията ви в резултатите от търсенето. За да избегнете това, укажете главната канонична страница, като вмъкнете следната последователност от знаци в блока HEAD:
Можете да използвате канонични страници, за да решите проблема с дублиращото се съдържание, а връзката за споделяне ще бъде обединена с основната ви страница. Но има шанс ботовете все още да обхождат дублиращи се страници, което е загуба на бюджет за обхождане. Robots.txtЗатварянето на някои страници от индексиране ви позволява да постигнете добри резултати. Това е прост, бърз и надежден начин. Най-лесният начин да направите това е да зададете персонализирана опция, за да посочите всички възможни комбинации от аспекти и филтри, които искате да блокирате. Включете го в края на всеки URL адрес, който искате да скриете (http://адрес на цялата страница/robots.txt) или използвайте мета маркера Robots в областта HEAD на кода на страницата. Когато правите промени в URL адреса, имайте предвид, че са необходими 3-4 седмици на роботите да забележат и да отговорят на тези промени. Тук също има определени проблеми. Стойността на връзките ще бъде ограничена и блокиран URL може да бъде индексиран поради наличието на външни връзки. Google Search ConsoleТова е чудесен начин временно да коригирате проблемите си, докато работите върху създаването на по-добра и по-удобна за потребителя навигационна система. Можете да използвате конзолата за търсене на Google, за да кажете на търсачката как да обхожда вашия сайт.
Не забравяйте, че този метод скрива само дублирано съдържание от роботите на Google. Страниците все още ще се показват в Bing и Yahoo. Как да подобрим фасетната навигацияНека разгледаме накратко всички методи, които ви позволяват да създадете правилната фасетирана навигация:
ЗаключениеВсяко от споменатите решения има своите предимства и недостатъци. Няма универсално решение, всичко зависи от спецификата на вашия бизнес и конкретния случай. Оптимизираната фасетна навигация ще позволи на вашия сайт да насочва към по-широк набор от ключови думи. За да избегнете риск, уверете се, че навигацията не само отговаря на изискванията на роботите за търсене, но и осигурява добро потребителско изживяване. |