coen.bakker
Advice for building search based on search phrase relevance and user profiles?
One of my web apps reached a point that it is now time for me to build a search feature for it. On the one hand user’s need to be able to find relevant content using a search bar, on the your hand the content that is loaded on the initial page load should be relevant to the user that is logged in. Therefore, I am eager to learn about how to query my database ‘by relevance’.
I am pretty much starting from scratch. I will need to learn about full text searches, indexing, user profiling, signals, Inverse Document Frequency, etc. (these are some of the topics I read about somewhat so far). Also, I also hope to become knowledgable about best practices, limitations and optimizations.
Any advice regarding learning resources? Or how to approach this learning journey?
I ran into this book: About this Book · Relevant Search: With applications for Solr and Elasticsearch. It covers the topic nicely, it seems. It focusses on ElasticSearch or Solr. I am not planning to use ElasticSearch or Solr, though, but rather stick to Postgres.
Most Liked
bdarla
One of the books I liked on this topic is AI-Powered Search by Manning. It employs Solr for the provided examples.
BTW, I remember a discussion I had with @dimitarvp wherein he mentioned Meilisearch as a lightweight alternative to ElasticSearch and Solr.
Myself, I have used in practice ElasticSearch. It provides the functionality I need, it is easy to interact with Elixir via the snap library. Of course, optimising the cluster and dealing with the required resources might be an issue.
NickGnd
Hey @coen.bakker ![]()
In the past I implemented a fuzzy search with postgres using the pg_trim extension with good results, but I don’t think it can work reasonably good and fast when dealing with full books, maybe you can give it a try.
Some resources:
- Ordering fuzzy search results by relevancy using trigrams
- A powerful full-text search in PostgreSQL in less than 20 lines
- How to use fuzzy string matching with Postgresql
- PostgreSQL: Documentation: 15: Chapter 12. Full Text Search
Hope it can be of help, keep us updated ![]()
coen.bakker
This thread has been useful also. Hadn’t found it before.
cmo
There is typesense too, which is billed as an algolia alternative or a lightweight alternative to elastic. IIRC it does want to keep a lot of stuff in memory.







