GSOC 2024: Enhanced Search Functionality for OpenELIS

Hey everyone,

I feel happy and simultaneously nervous although thrilled to be participating in the 2024 GSOC as an intern working on the Enhanced Search Functionality for OpenELIS.
This will bless me with an opportunity to improve my skills as a Java-oriented contributor

Objectives

The main goal of this project is to enhance and streamline the search functionality within the OpenELIS system. By integrating advanced search capabilities, we aim to empower users to quickly find the information they need, leading to a smoother user experience.

Current Implementations

The current implementation, based on SearchResultsServiceImpl.java, defines a SearchResultsService interface and its implementation, SearchResultsServiceImpl. It relies on a SearchResultsDAO for data access operations related to retrieving search results. Two methods (getSearchResults and getSearchResultsExact) are provided to retrieve search results based on various criteria such as last name, first name, and patient ID. The implementation is transactional and utilizes Spring’s dependency injection.

My Approach

  1. Identifying Essential Features: Prioritize features like full-text search, autocomplete, faceted search, and fuzzy search.
  2. Relevance Tuning: Determine the required level of relevance tuning to ensure accurate and meaningful search results. This involves adjusting the ranking algorithm to prioritize relevant search results based on user queries.
  3. Multilingual Support: Explore options for supporting multilingual search capabilities, including language detection algorithms.

Search Engines to Consider

Some search engines that could be suitable for this implementation include Elasticsearch, Apache Solr, Algolia, Amazon Elasticsearch Service, and Azure Cognitive Search.

Future Implementation

The proposed future implementation aims to enhance the search functionality by adding features such as autocomplete, fuzzy search, and advanced filtering options. This may involve introducing additional methods in the SearchResultsService interface, modifying or extending the SearchResultsDAO, and integrating with external search libraries or services. The user interface may also require updates to accommodate these new features.

I’m sharing these ideas for discussion and feedback from mentors, fellow interns, and community members.

Feel free to share your thoughts!
@Moses_Mutesasira @caseyi @abertnamanya

4 Likes

Thank you @Agaba_Derrick_Junior for starting the thread. I am also excited and interested about this project and have been doing some research on it. Overall steps that I think should be done are -

  • Using an open source search library in Java to index the data (in addition to the database)
  • Update the search APIs to read from the indexed data

I will add more points here once I complete my research on the code and the end to end process that should be changed.

Also looking forward for more ideas here!

1 Like

Hello @Agaba_Derrick_Junior @rahul6603

Could you please let me know if the project’s backend is based on Maven or Spring Boot? I’m comfortable with the frontend, but I’m having trouble understanding the backend.

Could you suggest any documentation, specific topics, tutorials, or links that would help me understand the project’s backend better? Any assistance would be greatly appreciated.

Thank you.

Hi @abcd_z - both maven (dependency management) and spring boot (for APIs) are used in the project, you can refer to the docs here - OpenELIS Global Documentation for a better understanding

Thanks for the insight @rahul6603