Hover over the dots to explore related posts. Closer dots are more semantically related, and the red dot marks the current page.
Hover over the dots to explore related posts. Closer dots are more semantically related, and the red dot marks the current page.
Today at 904Labs Search we’ve been having fun with the next version of our Query Intent/Understanding engine.
If you don’t know what a Query Intent/Understanding engine is, here’s some background; otherwise keep reading.
Our Query Intent/Understanding engine is closing to one year old, and it’s pretty cool: it can quickly boostrap a knowledge graph and continuously update it straight from our customer’s data. Since its introduction in September 2017, it has been tested in many different domains and languages and has shown substantial revenue uplift across customers.
In the last couple of weeks, our team has been busy tweaking our engine and pushing it even further. Our Query Intent/Understanding engine was doing already a good job, mapping query free text to product attributes such as category, or brands. However, we’ve never tested going deeper into particular product attributes, such the product weight or even, wattage. Our engineers managed to extend the logic and the scalability of the algorithm to support very fine grained suggestions, if such fine-grained information exists in the index. It is quite a feat and I’m very proud of our team!
On top of the engineering feat, the algorithm itself is pretty lean and has quite a few distinctive features that are hard to find in other engines: it does not depend on external dependencies (read Wikipedia), nor it needs periodic re-training. The only thing that a customer has to do is to plug in our system to a Apache Solr/Elasticsearch, and 904Labs Query Intent engine is built incrementally, one click/add-to-basket/purchase at a time. Oh, and it doesn’t write anything on your index. Magic!
Here’s a few interesting examples that came out from today’s experimentation:
(the examples are in Dutch; I try to translate the queries into English. Field attributes and values may be partially redacted for anonymity)
The system learns to map the query: lampen
(lamps) to Solr’s directive: category:Lampen
. Learning of this mapping is automatic and based on only from user interactions.
Query: Tent
→ category:Tenten
. Note how the system has learned the mapping from singular to plural without using of manual synonyms.
Query: Stoel kussens
(chair pillows) → category:Kussens
(pillows). In this example, the system maps a specific query to a broader category. This highlights a productive synergy between human and machine: the site’s taxonomy lacked a dedicated leaf node for chair pillows, so the system intelligently selected the closest broader category. This choice influences the downstream learning-to-rank process, bringing greater focus to the broader category of pillows.
Query: Bed 160x200
→ size:160x200 cm
and size:160 x 200 cm
. Note how the system has learned the discrepency in attribute values and suggests both; in the first one there are no spaces in the representation of the dimension, in the second one there are.
Query: stoelen
(chairs) → category:... en eetkamerstoelen
(kitchens and dining chairs). Here the system attempts to infer the intented category for a broad query such as “chairs”. Although there is a category labeled “chairs”, the system decides to suggest a particular leaf within the taxonomy branch of chairs.
Query: tuinset
(garden set) → number_of_persons:12
. The system implicitly defines the size and dimensions of the garden set from historical user behavior. Given the lack of a user profile, suggestions like this aim at capturing the interests of the average user of the shop.
Finally, two of my favorites, where the system attempts to infer several attributes of products from broad queries—
Query: prieel
(garden house) → material:XXX, color:Beige, weight:4.9 kg
. Here the system maps a broad query to distinct set of attributes, i.e., the material, the color, and even the weight of the garden house. Again, with no user profile provided, these suggestions attempt to capture the interests of the average user of the shop.
Query: eenpersoons bed
(one person bed) → size:90 x 200 cm
. The system maps the query to exact dimensions for the bed!
Query: XXX lounge
(brand redacted) → model:White XXX
. Here the system manages to map a brand and type of products from this brand to a specific product model from this brand. Again, without user profiling. Quite impressive!
I hope you also find exciting what the new version of 904Labs Query Intent/Understanding engine can do. You can have this technology working for you too and straight away, by getting in touch with us. Plus, unlike other search engine providers, with us you keep your index, and we don’t touch it so we don’t lock you in. The first month is for free, terminable monthly.