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.
1) Preparing the OPFF or XML file with the products, attributes and other necessary data.
2) Customizing the search results page view.
Sample code and a full-set of documentation, including a FAQ and quick start guide are also provided to every client during implementation.
The Open Product Feed Format is a recommended data-exchange format for Shopimate™. It solves the problem of efficiently transferring product-related data across the web. It allows companies to depart from nonstandard and internally incompatible XML files in favor of JSON. It is a flexible and expandable open format – the full set of documentation is available online: