Inflect is the only global, neutral online marketplace for the buying and selling of internet infrastructure products. Inflect’s goal is to make the process as easy as it is to book a hotel or airline ticket.
Inflect attributes its ability to deliver the buying experience the industry needs in large part to Algolia’s search-as-a-service platform. Algolia allows the Inflect engineering team to focus their development efforts on the back end, data normalization efforts and overall user experience.
We talked to Jason Barry, Inflect’s front-end lead, to learn how his team went about finding a search solution, their Algolia implementation, and how various search features serve their users.
Tell us a bit about Inflect: what does the company do and what problems does it solve?
The internet infrastructure industry is comprised of two big buckets of service providers – Infrastructure as a Service (IaaS) and Network Service Providers (NSP). The IaaS market’s current estimated size is $65B and growing at 21% CAGR, and the NSP market is projected to reach $20B by 2020.
Inflect’s main customers today are either hyperscale companies or enterprises looking for colocation and interconnection services globally. Today, a majority of these services are purchased through antiquated, manual sales methodologies. Customers have no easy way to search across multiple vendors’ offerings, and are forced to look at each service provider individually and try to piece together their own solution.
This means that they are making very important decisions based on old data and assumptions. Inflects aims to modernize this sales process by creating a system of record for the industry and creating a common marketplace for everyone to transact.
What led you to needing search? How did you discover Algolia?
Search is the focal point of our user experience. The first thing a user sees on the home page is a search field. After logging in, the user is redirected to the search page. Our goal is for users to find the solutions that fit their needs in the shortest amount of time possible.
We like to use our engineer-hours wisely: we didn’t want to build search from scratch. Instead, we decided to investigate services that had a feature set that met our technical requirements. We wanted a client-side search library with robust performance connecting to a distributed network, thorough online documentation, and flexibility and customizability. As front-end engineers, we didn’t want to spend time tweaking column indexes or optimizing SQL queries—we wanted to build our product without search getting in the way.
We looked at Swiftype initially, but I recommended Algolia after working with it at a previous role.
Tell us a bit about the implementation process.
Implementation has been a breeze thanks to Algolia’s documentation and dedication to open source. We decided to go with the algoliasearch npm package because it was lightweight and straightforward.
How about implementing specific features – any interesting details?
We recently added autocomplete to our search field. Customer response has been very positive. Every type of thing that we track gets returned by autocomplete: locations, data centers, service providers, peering networks, and internet exchanges. To do so, we created two indices that get queried at each keystroke: one index for locations, and one index for everything else.
Our locations index is composed of cities, states, countries, continents, colloquial regions (e.g., Silicon Valley), and airports. We wrote a script to grab the bounding box of items of each of these types and threw them in an Algolia index. We use a custom weight attribute in our ranking formula to control rank in the case of tie-breaks so that popular locations are always displayed first.
Our other index contains information about search facets from our datacenter_search index. Selecting an item from this autocomplete index would trigger the same action as selecting a checkbox on the datacenter_search index: for example, choosing “InterXion” would display all the data centers where InterXion is the colocation provider.
Our 99th percentile autocomplete response time is 14ms.
The response is so fast that we don’t have to debounce text input—debouncing actually made the perceived response time slower.
We’re using Mapbox to display search results from Algolia on an interactive map. Algolia makes this very easy, supporting geolocation search out of the box. By setting a _geoloc key on each record, you can add the aroundLatLng search parameter to query by a given lat/lng pair. On the end of a pan or zoom, we can create a new Algolia query with the current search query and filters coupled with the bounding box of the map. This helps us avoid massive responses of data only visible outside of the viewport.
Implementing this functionality on our own would have taken a non-trivial amount of time, but with Algolia, it was as easy as passing an argument to a function.
Synonyms for mergers/acquisitions and common names
In our industry, mergers and acquisitions are common. Bigger service providers buy up the smaller players, and change the marketing name of the data centers they own. The problem is that users still refer to them by their original names, even though the new names are under new ownership.
Algolia’s Synonyms feature allows us to address this problem gracefully. We have an array of known mergers and acquisitions set as one-way synonyms so that users can find data centers and their providers under their former names. Setting this up is as easy as filling out a web form on the index level — everything else happens automagically.
The icing on the cake is that a hit’s highlightResult has the markup properly noted. For example, if a user searches for “Telx” (a company bought by Digital Realty), Digital Realty shows up first with the resulted bolded around the text of the alternative synonym. This is also useful to find products or data centers with a commonly spoken name whose marketing name is actually different.
Above, you can see that searching for “zcolo” (a phrase known to refer to Zayo products and services) returns information about Zayo.
Conjunctive and disjunctive filtering
We have a set of filters containing thousands of different service providers, peering information, compliance, etc. Most of the time when selecting filters, users are looking for the intersection of the checkbox options they choose—they want to see what matches this AND that.
This works in all cases except where items of a facet are mutually exclusive. Colocation providers tend to fall into this category, because for many the relationship between them and data centers are one to one.
We wanted the filtering of colocation providers to be the union of checkbox options (an OR), and everything else be an intersection. Algolia makes this very easy by giving developers control of which facets should be searched conjunctively versus disjunctively. This way, a complex query like “show me data centers owned by Equinix or Digital Realty that have Level 3 and Comcast on-net” can be supported just by checking a few checkboxes.
A feature we’re making more use of is being able to see search queries that return zero results. Looking at this data helps us fill in the missing pieces that our customers expect. From a business perspective, this gives us leverage when asking companies for their data—we can approach them with the frequency of these zero-result queries as an incentive to join our platform.
What have been the benefits of using Algolia either for your team or your users?
A key benefit Algolia has given us is the ability to iterate without getting in our way. Our back-end engineers were able to upload the data in the structure we wanted without a hitch, and afterwards we were able to query and configure the indices to our heart’s content without asking for help. The time we saved using Algolia allowed us to focus on building our actual product.
Our customers are happy with the speed, relevance, and our ability to solve their business problems through the search functionality.