Improving Large Site Search Relevance Part 1: Introducing Scoped Search
Photo by Anthony Martino on Unsplash
It is safe to say that most web users have taken advantage (or been victim) of scoped search at least once in their life, be that deliberate or not. According to the Nielsen Norman Group, scoped search refers to the principle that “allows users to limit their search to a section or type of content […] instead of searching everything in one go.” 1.
Coveo Blitz - The Coveo Blitz 2019 code is now available online!
It’s been a few months since the 2019 edition of Coveo Blitz, our yearly coding competition, where students from across the province must design the best algorithm to outplay their rivals. This year again, the quality of the participants was fantastic and left us to the edge of our seats until the very end of the event. Unfortunately, today’s post isn’t about giving you all the juicy details of the competition (more posts are coming on that topic 😉 ), but to announce that this year’s competition source code is available on our GitHub! You will find in this repository the main challenge, the “micro-challenges” and a local “test” environment for you to test your bots and solutions.
Building an Intranet People Search
Coveo is rapidly growing, and moving fast; it can be a challenge to keep track of newcomers or to know what our colleagues are now working on.
To help us overcome this challenge, we created an internal People page using Coveo, where we showed recent contributions someone made alongside their profile, making it quite a useful tool for new employees to learn about their new co-workers.
Avoid No Results Pages, Display Popular Results Instead
There are only a few things more frustrating than getting a simple no results message when you are searching something. Luckily, with the Coveo JavaScript Search Framework (JS UI), it is very easy to propose popular search results to the visitor when that happens by adding a few components, lines of JavaScript, and CSS statements. It is especially important on a commerce website where all opportunities to display products may result in increased sales.
Coveo for Sitecore 5 - Product Manager Blog
Coveo for Sitecore 5 is now publicly available. Two years have passed since the release of the version 4, which paved the way for Coveo Cloud.
The Cloud adoption allowed Coveo users to quickly deploy their Coveo solutions and gave users access to powerful features such as Usage Analytics, Machine Learning, and cloud connectors.
Now that Coveo for Sitecore is fully connected to Coveo Cloud and managing an infrastructure is no longer a worry, we decided to focus on the integration into the Sitecore technology stack. The goal is to make every project faster and easier to deploy, so that you can spend more time building the cloud relevance engine you want, and less time in configuring the index and search interface underneath.
Interaction between Move Semantic and Copy Elision in C++
C++11 introduced move semantic, which allows, as its name suggests, to move objects instead of copying them.
The move process typically involves copying pointers to some resources, and then setting the original pointers to nullptr, so they cannot be used to access the resources anymore.
Of course, all of this is done transparently to the user of the class.
With this power comes a complexity, which is enhanced when it is coupled with copy elision.
Copy elision is the general process where, when returned from a function, an object is not copied nor moved, resulting in zero-copy pass-by-value semantics.
It includes both return value optimization (RVO) and named return value optimization (NRVO).
While the links on cppreference provided above probably contain all the information you might want to know about the interaction of move semantic with copy elision, they can be a bit of an arid reading.
The goal of this post is to give a quick and incomplete introduction on the subject.
This introduction is then used to present an interesting difference between the g++ and clang++ 3.8 compilers.
Using the Coveo Zapier App to Index Trello
At Coveo, there’s one thing we like above all: making sure we have all the data we might need at the same place. Coveo already offers a plethora of connectors to do so, but there are still many more places where you could find relevant data.
Enter Zapier, a web service that allows you to connect different applications or services together, to perform actions in an application when something happens in another. With over 1000 available apps, it soon became clear that a Zapier integration would be a great solution to surface all that data.
Deep Learning Showdown
If you’re one of the many passengers on the deep learning hype-train (welcome aboard), you’ve at some point almost certainly experienced the great confusion of having to choose a deep learning framework.
If you’re trying to choose a framework, or maybe re-evaluating your choices, I might be able to help!
I’ve done a lot of the leg work for you, having made a pretty comprehensive report on the state of deep learning frameworks that compares their strengths and weaknesses.
CoveoMap: Building a custom Coveo Component
Maps are awesome. A good map implementation reacts to user’s current context and provides relevant information. Since maps are great at visualizing relevance, the Coveo for Sitecore product team decided to experiment with that concept. While exploring the concept, several use cases related to customer requests have emerged. This article will serve as a guide for these specific cases while remaining primarily focused on geospatial research.
Before we start, you can refer to the code here, and have a look at the live map here
On The Menu
Geospatial Search
Persistent Queries
Custom TypeScript Coveo Components
Push API
Advanced Relevance Tuning
Spring Boot and AWS Parameter Store
Storing parameters securely accross multiple environments with employees having different level of access in each of those can be challenging. AWS Systems Manager Parameter Store offers a nice solution to that problem with lots of advantages such as:
being hosted, highly available, and scalable
history tracking
encryption with KMS
audits in CloudTrail
notifications with CloudWatch or SNS
granular security using IAM policies
Every security team’s dream.
When we decided to store our deepest secrets in the Parameter Store, I searched right away for an integration with Spring Boot/Cloud for our Java microservices. I was left empty-handed.