Who needs ecommerce recipes? For SAP Commerce and beyond

My hobby is online retail automation. For many years, even on my weekends, I have not crawled out of this "swamp". Yes, it probably sounds crazy and even funny. How can you get carried away with such a boring business? - some will say. What's there to get carried away with, it's just some kind of private topic for a self-respecting software architect! - others will say.



Indeed, at first glance, this is, as they say, an undisclosed topic. In fact, this is a collection of different topics, one way or another, dragged into e-commerce. And in the end it turned out to be exactly what I love: technology integration.



And since 2016 I have been running a tech blog, hybrismart.com . Such a "habra" in miniature, only in English and with a focus on a topic close to me - development on  SAP Commerce... We have formed a small company of several tens of thousands of authors here, but so far only a part of them are writing to the blog. Well, okay, few write so far. Ten. But we are trying. The blog has already accumulated under two hundred articles, mostly large and very large on a variety of topics, in one way or another related to ecom. In a significant part, this is still a personal blog, so I'm taking the rap here, not our PR service. But this is from the heart, really.



As you might guess from the name, hybrismart is about hybris ( what is it?). And almost everyone who finds it knows about Hybris firsthand. And vice versa: probably every developer on hybris has visited the blog at least once (of course, not of their own free will, Google helps us!). Now here you are. And so that you do not get lost there, I want to conduct a short excursion. Please ask questions at the very end.







THIRST OF SEARCH





Someone will say that where there is e-commerce, there is shopping for cards, and where there is shopping for cards, there is e-commerce. But this shopping card still needs to be found. So are the goods. And then a topic arises in which the number of homemade "bicycles" is off the charts: product search.



Perhaps this is the "thickest" topic on my blog. In highbris, Apache Solr is responsible for search , one of two large and ubiquitous open source engines (along with ElasticSearch). But as you understand, the specifics of Highbris in articles about search are a minimum. Simply because everyone has about the same problems.



So let's go.



Rauf Aliev, Timofey Klyubin

The Challenges Of Chinese And Japanese Searching

https://hybrismart.com/2019/08/18/the-challenges-of-chinese-and-japanese-searching/



Together with Timofey Klyubin, we made a gigantic review of text search in hieroglyphic languages, described the typical difficulties of computers with these icons and how to solve them in Solr. You will also learn about various cultural and linguistic features and specifics of faceted search design in Japan and China.



Timofey has been studying Japanese for a long time, besides Hybris and all sorts of IT stuff. I would like to write here "and I am Chinese", but alas. My work was born in the process of deep study of the topic, caused by the need for work and the desire to once and for all close the questions that tormented me, and Timofey was just doing what he loved.



Searching in Japanese and Chinese brings up problems you never knew existed. For example, look at Google's clues for the word “と う き ょ う え” (tōkyōe), which Google gives “東京 駅” (tōkyōeki) (Tokyo station). In this case, both words are different spellings of the same, and the search engine knows this. The Japanese have their own punctuation marks, two alphabets, a complex system with numbers, context is important. We describe all this in detail.







Rauf Aliev

Facet Search: The Most Comprehensive Guide. Best Practices, Design Patterns, Hidden Caveats, And Workarounds.

https://hybrismart.com/2019/02/13/facet-search-the-most-comprehensible-guide-best-practices-design-patterns/



And this work is related to faceted search. Beware, there are a lot of letters, but there is a convenient content with links. It would be conceptual to do a faceted search on an article on faceted search, but I stopped myself in time.



The article attempts to systematize knowledge and experience in this area and organize this knowledge in the form of one big "sheet" with facts, references, and best practices. Probably, it should be useful for those who are connected with user interfaces by the nature of their work.



Despite the fact that facets are the most commonly used concept in ecommerce (after shopping cards), there is always a great temptation to reinvent a wheel. Judging by what we see on the sites, many people use it, resulting in a lot of inconsistencies and contradictions. I tried to collect them together with solutions that are considered generally accepted.







Rauf Aliev

Autocomplete, Live Search Suggestions, and Autocorrection: Best Practice Design Patterns

https://hybrismart.com/2019/01/08/autocomplete-live-search-suggestions-autocorrection-best-practice-design-patterns/



Since "searches" have gone smart now, and often the user knows better what he wanted to find, and the devices are small and inconvenient, a lot of attention is paid to Search Suggestions - a way to formulate the desired search query in less time, in a minimum number of keystrokes, mouse clicks or “ tapov "on the screen.



In this article, I review the topic, "best practices" and common mistakes. The article was born when I was designing a smart autocomplete system for a large biotech company that makes it easier to search for antibodies and reagents. "Smart autocomplete" suggested the completion of the current word in one click, relying on the words already entered, certain collocation rules and query statistics. The closest analogue from linguistics - after entering a verb, a noun is more likely to come than another verb.







Rauf Aliev

Search Analytics

https://hybrismart.com/2017/10/06/part2-sap-hybris-thinking-outside-the-box-part-2-of-4-video-russian-english-search-analytics/



Some materials presented on the blog not in the form of articles, but in the form of videos. There will be 40 of them in total . Unfortunately, this format has not yet taken root. HereI'm talking about Search Analytics - a mechanism for collecting and processing statistics related to the actions of buyers with the involvement of product search. I came up with this mechanism for a large grocery store in Europe and double-checked it for the same biotech company from the previous example. In short, the idea is that the actions of buyers can tell a lot about how search works and where it has weak points. For example, statistics show that some products are searched often, but they are rarely put in the cart (high price? Outdated models?), While others are often put, but they are rather poorly searched (tips?), And after the third they are ready to click several pages of search results ( are some irrelevant goods coming out ahead?). In general, this is Google Analytics, but for search.



Rauf Aliev

Multi-line Search

https://hybrismart.com/2017/04/07/multi-line-product-search-for-bulk-orders/



Having your blog is convenient because you can upload ideas and experiments there and free your brains for what - something more relevant and new. In this article, I described the concept of "multiline search" for B2B sites, which was once relevant in its time.



The idea is that it is often convenient to search on a site by copying and pasting a whole group of SKUs or product names in the search field, rather than doing it one line at a time.





Rauf Aliev

Product Image Visual Search

https://hybrismart.com/2018/08/26/product-image-visual-search-in-sap-commerce-cloud-hybris-commerce/



In this article, I describe finding similar products - by color or shape. This is a rather "classic" topic, but in practice, for some reason I do not understand, is rarely implemented. I made a prototype and described the materiel. Almost all articles of this nature are accompanied by a video showing how a prototype works with SAP Commerce, and this one is no exception. To integrate with Apache Solr, I used Lire ( https://github.com/dermotte/lire ).





Rauf Aliev

More Like This In SOLR

https://hybrismart.com/2017/02/05/more-like-this-in-hybris-solr-search/



If in the last article we looked for similar products in color and size, then similar ones are shown here. The system calculates and orders products according to the similarity of the indexed content - product descriptions, names, characteristics. The greater the similarity, the closer the goods will be in such "clusters" to each other. For the user, we can display goods that are nearby in such a "space of similarities", which are likely to be substitute goods.







Rauf Aliev

Concept Aware Search: Automatic Facet Discovery

https://hybrismart.com/2017/06/25/concept-aware-search-automatic-facet-discovery-in-hybris/



Here I also describe an interesting experiment and prototype: the system exposes facets on its own, based on the entered search query. For example, if you are looking for something with the query “red dress size 39”, then you should not show products that have all these words in the description or name, but products filtered by the tag “red”, “dress” and “size 39 ". For the Russian language, you will also need dances with tambourines, and with English everything works now. Inside there is a demo showing the difference between how the default search works and how it works, but with my logic on top. It's called Feel the Difference. However, it should be noted that this approach still has side effects, and the system needs to be very carefully tuned to satisfy everyone or almost everyone.



Rauf Aliev

Enhanced Multi-Word Synonyms and Phrase Search

https://hybrismart.com/2017/08/09/enhanced-multi-word-synonyms-and-phrase-search/



There is a known problem in SOLR (and this is not only with Hybris), that verbose synonyms work very crookedly. It still somehow works with one-word, but also with its own difficulties. The blog post describes a solution to work around these issues and make your search smarter. In the absence of unambiguity, the system goes through different variants of substitutions and selects the most “winning” substitution.



The blog has a couple dozen more articles on the topic of search. And in this wonderful place, the topic of search gives way to the topic of calculating promotions and discounts and other loyalty.



PROMOTIONS BY RULES





"Buy two down jackets for the price of three and get one for free!" That only marketers can't come up with so that programmers don't get bored. You spend six months doing a perfect "engine" of stocks, which can do everything in general and a little more, and then a manager comes with another idea, because of which you need to rewrite half! Highbris also had two generations of such "engines". The developers decided not to reinvent the wheel and used JBoss Drools, a fairly powerful business rules management system that is integrated into the hybris for the promotion mechanics theme, a topic that is narrow but varied in its narrowness.







In a nutshell, Drools is a business rule runtime. The engine processes the so-called "facts" - the input data - and produces the result as a result of processing rules and facts. In highbris for Drools, we made an interactive rule editor "in terms of e-commerce", and also introduced an API for extension.



Rauf Aliev

'Could Have Fired'

https://hybrismart.com/2016/06/04/hybris-6-could-have-fired-messages-poc/



If any rule is triggered, then a discount is applied. The rules are applied to the shopping cart. My experiment in this article shows that the rules can apply not to the cart, but to the combination of the cart and the current item. That is, you haven’t clicked the “buy” button yet, but you can already see what paradise gardens and magnificent palaces will now be added to the basket as a gift. This is supposed to make the user happier and increase sales.







Rauf Aliev

Distributed promotion calculation in the cluster. Promo as a service

https://hybrismart.com/2016/07/05/distributed-promotion-calculation-cluster-promo-as-a-service/



So, this very Drools is integrated into the platform. And she is a monolith. A monolith is when all the code grows from one place. And when a user pokes an icon on a shopping card, millions of little gnomes on the server begin to create a context for Drools, then fill it with “facts”, which include products, categories, user properties and everything else that the promotion may depend on. And this happens on the node in the cluster where the load balancer brought the user. And if there is suddenly at this time interruptions with processor resources or memory, then the user will suffer. Then, the user is given a discount or a gift, and the server cleans up all this economy. Until the next time when it starts to be created again.In this article, I describe my experiment in moving Drools into a separate cluster and removing the stage of this Drools configuration from the request. In addition to the fact that this increases productivity, it also allows you to do rather complex actions, where, for example, millions of "facts" are involved.







Rauf Aliev

Using hybris rule engine for product recommendations

https://hybrismart.com/2016/08/09/using-hybris-rule-engine-for-product-recommendations/



In this example, I show how you can arrange a recommendation system based on rules using a ready-made mechanism based on Drools. In my prototype of a recommendation system, recommendations can be created interactively by constructing the logic of links between accessories and products or similar products to each other. For example, anchovies for beer, mentos - for cola, birch juice - for Buratino, soap - for a rope, an outlet and a file-fi router - for tea and coffee. Recommendations are always good when they are meaningful.







Rauf Aliev

Complex Realtime Event Processing with Drools Fusion

https://hybrismart.com/2016/10/17/complex-realtime-event-processing-with-drools-fusion-integrating-with-hybris/



Well, since I already built this cluster, I could not help but torture it and build based on it, a thing that would process events on the fly, imposing rules on them on the fly. I was able to figure it out and connect the latest Drools Fusion + Drools Server to hybris. This thing is correctly called Complex Event Processing. The point is, if you have a stream of data to process in real time, Drools Fusion makes it fast and flexible. For example, in the case of e-commerce, there is a lot of such data. The simplest are clicks and transitions.



I recorded and published a demo, from which it is clear how it works. Logs are uploaded somewhere to the storage, and from there they go to drools fusion for processing. In the drools language, rules are written that extract some new knowledge from the logs. In my demo, this is simply the identification of a photographer / non-photographer by the nature of visited pages and clicks. For example, a user has already viewed a cloud of models and we conclude that he loves models. Or he drives the mouse for a long time over the photo of his favorite tripod, from which we conclude that he loves not only models, but also tripods. The result of the rules is returned back to the highbris and can be used somehow there. Banner show or lower prices slightly for photographic equipment.







The main feature of all this is that the stream of events is processed in real time. In my example, this is finding at least five pages of one thematic group in the last 30 seconds for one user.







The second important point is that such a system is very scalable, because each server works independently. At that time, the personalization built into the highbris was still alive. It was later replaced with a paid service. She was terribly inhibitory, and therefore few people used it. Here servers are loaded, the software of which does not cost anything: it is free. And then ready-made solutions are pushed into the highbris, which need to be visualized there stupidly.



Rauf Aliev

Reactive Rule-based Dynamic Forms

https://hybrismart.com/2018/01/04/reactive-rule-based-dynamic-forms-in-hybris-using-drools-7/



Drools can also be used to automate complex shapes, and in my experiment I show how this can be achieved. In this experiment, I demonstrate how you can implement a multi-page, multi-stage form, in which the composition and configuration of fields and steps changes depending on the information entered into other fields. Such logic is rather difficult to implement in standard approaches to forms, and its programming is much easier when Drools is used to describe the rules.







To smoothly finish off the Drools theme and start the e-commerce and hybris stuff topic, I'll provide a more detailed overview of promotional mechanics.



Rauf Aliev

Promotion Mechanics and Their Implementation in Hybris

https://hybrismart.com/2017/04/30/promotion-mechanics-and-their-implementation-in-hybris-6-x/ You



notice that almost all topics are not exactly about highbris. There it is everywhere, somehow sideways, but in general e-commerce is not a thing in itself. Everything is connected to everything.



Of course, there are dozens of other materials on the site that are quite difficult to understand for those who did not understand highbris at all.



Rauf Aliev

Merging Carts When A Customer Logs In: Problems, Solutions, and Recommendations

https://hybrismart.com/2019/02/24/merging-carts-when-a-customer-logs-in-problems-solutions-and- recommendations /



For example, in this article, I describe the problem of merging baskets after authentication. This is when you put fifty different ducks in the basket, and then logged in, and the store mixed there 50 bunnies selected from the last time. There are different strategies for how to separate the ducks and bunnies in this example, and I will analyze them. I analyze strategies, not bunnies.







Rauf Aliev

Hybris Impex Preprocessor

https://hybrismart.com/2018/05/27/hybris-impex-preprocessor-impex/



This topic is probably useful only for those who are versed in highbris. I cite it here as an example of an article “for friends”. They are a minority, but they occupy their own important niche.



Highbris has a special format for importing and exporting data. It is called Impex and from the outside is very similar to a regular CSV. There is a very simple markup language showing that this block below is for products, but that block is also for categories. In general, it is quite convenient, but not when you have twenty almost identical sites in different languages, and every time you add some interface component for all twenty, you need to copy and paste the same twenty times without errors and then support it ... I had such a project, and I proposed a solution with JSON macros that helped create an impex from impex-with-macros. There are not ordinary macros, but with loops and parameters.



If you don't understand anything, then that's okay. We also have jokes that no one outside the party understands. Although they are all sad, let's not talk about that. We have a serious article.



Rauf Aliev

Payments: A look Inside the Black Box

https://hybrismart.com/2019/09/08/payments-a-look-inside-the-black-box/



I once worked as a development manager at Chronopay, and with Since then, the topic of electronic payments hung over me like a dark heavy cloud, until I landed it in this article and freed my brains for new challenges. It contains the essentials for understanding integration with payment gateways and services, best practices and typical oversights that you need to avoid (or use if you are an angry customer).







Rauf Aliev

Server-side PDF document generation

https://hybrismart.com/2017/06/15/pdf-and-sap-hybris/



And even earlier, in the days of schoolbooks and pagers, I worked as a designer and layout designer (however, at Kolomna Pedagogical University and the paging company Mobiletelecom I also worked . Yes, I'm already old). Not by the typesetter who is HTML, but by the one who is about books and magazines, and sometimes even Orthodox newspapers, TV programs and sheet music. And, of course, I could not ignore the topic of Postscript and PDF, which scare a lot of people because of the vague and poorly documented internals. In this article, I show that the devil is not so terrible, and I review the tools for generating PDF.







Rauf Aliev

Authentication with Hardware Security Keys via Webauthn in SAP Commerce Cloud

https://hybrismart.com/2019/05/23/authentication-with-hardware-security-keys-via-webauthn-in-sap-commerce-cloud/



In this article I describe a prototype for authorization using USB keys, and the latest (at the time of the article) advances in this direction in the market, such as passwordless authentication supported by browsers. I managed to integrate with the Yubikey highbris, I describe how it turned out (and turned out).







Rauf Aliev

Geofencing: Custom Shipping Zones

https://hybrismart.com/2016/10/19/geofencing-in-hybris-custom-shipping-zones/



Another experiment: the use of marked areas on the Google map for various purposes in e-commerce: finding the optimal warehouse, searching for available stores for pickup or the best delivery person, or maybe the very fact of the opportunity to sell a product or service to a buyer from this zone.



It works like this: the buyer enters the address, and the system defines it in one or more large zones. The various components of the system already depend on these large zones, rather than on smaller address components such as a postal code.







At the same time, I figured out the development on Google AppEngine. The fact is that the definition of a polygon (zone), which includes a point on the map (where the buyer is), for a situation of "many zones of complex shape" can potentially be a rather "difficult" computational task. And if there is a possibility, it is better to do it right away on a cluster that can easily scale, or better yet, on its own. And this case is excellent for the Google AppEngine, which uses Google DataStore to store polygon parameters, and Google Memcache to store the cache.



Rauf Aliev

Page Fragment Caching: Custom, with Varnish, Nginx, Memcached

https://hybrismart.com/2016/07/24/page-fragment-caching-for-hybris/

https://hybrismart.com/2016/07/ 27 / varnish /

https://hybrismart.com/2016/07/30/hybris-page-fragment-caching-with-nginx-and-memcached/



In these articles I talk about the mechanism of smart caching of parts of pages. Each of the parts has a compound key that tells you what it depends on. For example, to cache the list of delivery addresses of an online store (I have an example in the video), the user ID can be a composite key - then different caches will be used for different users.



The mechanism is especially effective if the "heavy" functionality (in terms of memory and processor usage) is removed from the page controllers into the components. This technique is not ideal for caching page controllers.



To get a better idea of ​​the idea, it's easiest to look at the templates screenshots in the middle of the article.



Rauf Aliev

Best Practices: Migrating Content To Hybris

https://hybrismart.com/2017/01/10/best-practices-migrating-content-to-hybris/



Migrating Data with Pentaho ETL (Kettle)

https://hybrismart.com/2017 / 01/15 / migrating-data-with-pentaho-etl-kettle /



And here is a lot about data migration: best practices, tools, architecture of my self-written tool. Although there is the word "Hybris" in the title, but as in others, this article is not 100% about highbris, not very "geek", so, I hope, it will be understandable and interesting to everyone who knows what "migration data in a web project ".



* * *



Also on the blog has a pretty detail disassembled threads chat bots (Facebook, Skype, custom), the imposition of storage sessionsoutside of Highbris into a separate service, analysis of everything related to authentication and login forms, analysis of the implementation features of travel services (booking tickets, hotels) - part 1  and  part 2 , as well as collected best practices for integrating product availability with external systems , and what difficulties this process has, and much, much more.



What other topics would you like to see analyzed in this way? According to the blog concept, they should be related to ecommerce. Any feedback and suggestions will be welcome.



All Articles