Azure Search and Hiding Complexity
Building a search tool is one of my favorite challenges. I think the reason is that the number one goal of any software development or technology professional is to 'make complicated things simple.' One of the most influential books I have ever read was Code Complete by Steve McConnell. Not only is this book one of the bibles of software development, but it contains some deeply philosophical ideas like this.
Search sounds simple. Good search looks simple. Google made lots of people rich because they took a complicated thing and made it appear simple. One big box in the middle of a screen. Type some stuff in and there you have it, the answer you are looking for.
While far from Google, the ideas and the approach is similar. The average person does not want to learn a programming language to be able to use a website or search for things. They just want to ask questions and get answers. And when those answers are not specific enough, a way to ask again.
Building a search has a few basic precursors.
- Organize your data
- Design a user interaction you like
- Build your index and refining tools
Data in the legal cannabis industry is scattershot. While many websites seem to have a lot of data, a good deal of it is incomplete or out of date. Many states have business directories or licensing agencies that range from amazing downloadable delimited content, to PDFs that are gibberish. There is no way around a certain level if manual inspection and verification, sometimes literally talking to dispensary owners to verify the data is in fact accurate. Load up all the data. Come up with a way to validate it and keep it fresh. Many stores, like any other industry, go out of business resulting in aged or decayed data.
So what is the search experience supposed to be like? Should I have to know I need to type or say exact phrases or get the dreaded 'no results' page? It has always been a pet peeve of mine that programmers think everybody else understands how to use software the way they do. They don't. I think users should be able to ask questions of software like they questions of everyone else, and the complexity gets hidden from them.
Most notably is Amazon, which I read somewhere has actually passed Google for the number of searches executed by users. I ask it stuff, it shows me stuff, and then let's me add more details to quickly find what I am looking for. It is pretty clear that Amazon's search experience 'hides' complexity from us. A lot is going on after I ask the questions. We aim to provide equal power and usefulness as this data set grows and grows.
Ask a simple question, get a simple answer.