Dergilik launched in 2011, and search infrastructure was quite old at that time. We analyzed users' search experience, and as a result, our users struggled and sometimes even couldn't find any result in search. So our search experience was not good enough.
The objective was crystal clear: enhance the search experience. We were going to build a new search engine for Dergilik using elastic search, and it was a whole new world for me. At the time, my manager had installed elastic search on his laptop, and he was referring to terms that I was unfamiliar with. My technical background is something I am very proud of, but he is a world of difference from me. He has extensive development knowledge, so it was a challenge for me :) By the way, he was the primary reason for my decision to join the Dergilik team at the time. I began studying elastic search by taking online courses and reading books. I was able to create a cloud-based playground using Dergilik sample data. So, after two weeks, I'd say I was as prepared as I could have been.
We started talking about it and came up with a plan for how we were going to do it. At first, we wanted to deliver the same experience as before, but with new infrastructure, and then incrementally improve the experience. After that, we wanted to have the opportunity to optimize our solution in the production environment. Let me specifically thank Derya for making this possible. We worked with Derya on different projects in Dergilik for around 2 years and we did many projects together. She is one of my colleagues that I enjoy working with the most. It is not only about her development skills, but also about ownership/accountability, teamwork, creativity, and other factors.
Anyway, users could search through names of articles, magazines, newspapers, and text of articles at that time. Our search experience also didn't support prefix search and fuzzy search, so if users made word mistakes, they would not get/see any result at all.
In the beginning, we wanted to give the same experience with the elastic search that we did with the old search engine. We concentrated solely on our backend architecture and created a search experience without making any improvements to the lives of our users. It's the most important step for us because it gave us the opportunity to monitor elastic search for any potential issues. After that, we concentrated on improving the search experience for our users. We focused 3 key points:
- Prefix search: Users were able to get results even if they only typed two letters into the search query. For example, the word "uy" -> returns "uykusuz"
- Fuzzy search: Users were able to get results even if they typed wrong letters into the search query. For example, the word "uuykusuz" -> returns "uykusuz"
- Scoring: We tailor our scoring to each type of content. The result is optimized based on factors such as the number of reads, number of downloads, and the date of publication.
In the third iteration, we concentrated on the full-text search and made it possible for all of the contexts of newspapers and magazines. It's a fascinating improvement because it allows people to search for their favorite singer, actress, sports player, receipt, and other items.
In the final, but certainly not least, part of the project, we developed a completely new experience called Similar Articles. We provided them with the opportunity to read articles that were similar to the ones they were currently reading on our application.