Implementing a quick search module for your MVP

A standard way of prioritizing development tasks in a technology product (especially in the initial few weeks) is to go with the Minimum Viable Product (MVP) approach.  MVP is a product that has only the core features; you can find more information here.

A search module/engine is something which is ever evolving; even for tech giant like Google. Aiming at something that matches absolutely with what you have in your vision could harm your product launch timelines. Having said that, if your product is meant to have search as a core feature, it becomes imperative to have something developed quickly that could be shipped without compromising with your MVP timelines. Read below to know how we started and went about developing a NLP-based search module for BroEx in the initial days.

BroEx property search use case

100,000+ brokers across India post around 1000+ property listings per day on our platform. The property search feature helps them to hunt for residential and commercial inventories & requirements based on filters like area, #BHK, Price, Vaastu, Facing, Parking, Power Backup, etc. It also helps brokers to get closest results for their intended searches and showcase most relevant properties to their clients, which in turn helps them to close more deals successfully.

Before we dive deep, let’s talk about the technology at core for this module:

  • We use Solr as the data store where every document represents a property listing. Solr is the popular, blazing-fast, open source enterprise search platform built on Apache Lucene. (More on how our search module has matured now with Solr geospatial magic in upcoming blogs)
  • We use js as our primary programming language in the back-end. Node.js is a JavaScript runtime built on Chrome’s V8 JavaScript engine. It uses an event-driven, non-blocking I/O model that makes it lightweight and efficient.

How it works:

In the below diagram you can see how this magic works:

option_03

  • Users add their listings on BroEx with details like Residential/Commercial, Sale/Lease, Location, etc.
  • This information is now processed by a tokenizer code written in Node.js
    # Aggregated tokens for a listing based on the provided attributes are created
    # Every attribute goes through separate processing mechanism
    # Stop-words are removed
    # Processing based on representative keywords
    # Bigrams and trigrams for location attribute are considered
    # Additional tags are added to the list based on the nearby area knowledge base
  • The information along with the tokens are pushed to Solr
  • Users search for listings using different keywords like 3bhk in sec 45 / north facing 3bhk in sec 45 with filters
  • This information is then passed to Solr via Node.js
  • Information is processed in Solr along with search tokens from keywords and results are passed to users via Node JS

Although this system is not super smart (wait for the next release) but it did serve our purpose of having a working search module effectively. While we are well on our way to power BroEx with a revamped search back-end with geospatial intelligence and other bells and whistles, this module shall continue to support search feature in our app for cities we do not intend to get geospatial data for. (Just kidding, of course we will power all the cities with new search, we just like to solve the problems in parts).

With geospatial intelligence under the covers, BroEx will be able to serve more relevant search results and listings recommendations in the near future. Keep following this space to follow our regular product updates.

Team BroEx

BroEx is the largest go-to application platform for Real Estate Brokers to connect with each other to network and collaborate with each other to fulfill their business requirements reliably and quickly.

1 Comment

  1. “Hello my loved one! I want to say that this article is awesome, great written and come with approximately all vital infos. I would like to look extra posts like this.”

Leave a Reply

Your email address will not be published. Required fields are marked *

We know you're human, still this is for your security. *