Now, feel free to investigate this demo store by yourself.
Close this popup and try Shopimate live!
Our backend is designed to be distributed and scalable. Written in Clojure and running on the JVM, our API servers respond to most queries without accessing anything except RAM. There can be any number of API servers, each of them servicing any set of customers. Each API server can independently route requests to any other server. Data indexing and server/software upgrades are performed transparently, with spare servers providing continuous service. Servers, processing queues, and recommendation information are synchronized using Redis, while indexed search engine data can be stored either in S3 or on a shared filesystem.
We implemented two search engines: one is word-based, with unique graph-based typo correction and support for a morphological dictionary, and another which is n-gram-based, with our own unique ranking algorithm (based on the Smith-Waterman algorithm used for genetic sequence matching). The word-based engine performs better for inflected languages, while the n-gram engine is better for languages with simpler grammar and databases with many product codes.
We solved many hard problems in E-commerce search: result faceting, multi-valued attributes, product variants with price ranges, category trees, recommender systems with changing product databases, gathering feedback data, unified product feed format, and much more. As a result, we have extensive know-how in building product search, navigation and recommendation systems.
Our know-how extends beyond what we have built to date: there are many ideas we would love to implement, but business has always been driving our decisions: some features bring no bottom-line benefits, and thus were not implemented.