/search-engine

⚙️ 📈 Search Engine Rails project. That utilizes the Rails MVC pattern to build a robust search engine and analytics.

Primary LanguageRubyMIT LicenseMIT

search-engine-high-resolution-logo-color-on-transparent-background



Search Engine

📑 Table of Contents

📘 Introduction

Welcome to the Search Engine Rails project.:wave: That utilizes the Rails MVC pattern to build a robust search engine and analytics where a user can search for aticles and the search engine will work on finding matched results and also store the user's searches into analytics so the user can know what the most searched queries are and what people search for too.

With the RealTime search box, when a user queries articles "how are you?" the matched articles will be returned, and with the help of background jobs, the analytics for the user will be updated in the background without making the user wait until the analytics are updated, which means the application can receive many search requests and handle them efficiently and quickly. By supporting an authentication system, the search analytics can be updated only for the current logged-in user.

(back to top)

🚀 Live Demo

🎥 Presentation Video

💻 Getting Started

To get a local copy up and running, follow these steps.

Prerequisites ❗

In order to run this project you need:

Setup ⬇️

  1. Clone the repository:

      git clone https://github.com/ahmedeid6842/search-engine
  2. Change to the project directory:

      cd ./search-engine

Install ✔️

  1. Install the project dependencies using gem:

     bundle install
  2. Create your database and apply your migrates

     rails db:create
      rails db:migrate
  3. Make sure you redis-server is up and running:

    For linux user

      sudo systemctl status redis-server
  • In case redis server not working to start it:

    For linux user

     sudo systemctl start redis-server
  1. start the sidekiq by running:

      bundle exec sidekiq

Usage 🤿 🏃‍♂️

To start the application run the following command:

rails s

The application will be accessible at http://localhost:3000.

  • Alright, it's showtime! 🔥 Hit http://localhost:3000 and BOOM! 💥 You should see the login page and the Search Engine working flawlessly. ✨🧙‍♂️

🏗️🔨 Database ERD

drawSQL-search-engine-export-2023-10-12

👤 Author

Ahmed Eid 🙋‍♂️

(back to top)

🤝 Contributing

We're always looking to improve this project! 🔍 If you notice any issues or have ideas for new features, please don't hesitate to submit a pull request 🙌 or create a new issue 💡. Your contribution will help make this project even better! ❤️ 💪

⭐️ Show your support

If you find this project helpful, I would greatly appreciate it if you could leave a star! 🌟 💟

🔭 Up next

  • The current analytics work only if the user types "?". Try to find another efficient search indecator technique rather than the "?" mark.
  • Add recommendation articles feature based on the user's previous searches and analytics.
  • Add a chart to present the search analytics over time. 📈 📊
  • Apply the admin role.
  • Test the app using Rsepc

💎 Lessons Learned

  1. How to implement a real-time search engine
  2. How to take advantage of background jobs to make the response time faster and handle multiple requests.
  3. Implement the analytics functionality and get the trending searches.
  4. There is always something new to learn 👨‍💻.

(back to top)

🙏 Acknowledgments

I would like to thank Helpjuice for giving me the opportunity to work on this project. I really learned a lot while implementing this awesome project idea.

📜 License

This project is licensed under the MIT License - you can click here to have more details MIT licensed.

(back to top)