Challenge Overview
Competition Task Overview
Currently, projects can be filtered using the following criteria: status, name & type. We need to support additional search criteria for project search - keyword search.
In a previous challenge, we have implemented the new keyword search feature to replace project name search with keyword search. Keyword should be searched across multiple fields:
- name
- details.utm.code (details is a JSON field)
- description
The solution from the previous challenge works however we feel the performance is not good enough, so in this challenge we'd like to implement the same feature(s) again using a different approach. We'd like to utilize text search in postgres by using an index, this could be helpful: https://www.postgresql.org/docs/9.5/static/textsearch-tables.html
The API / performance requirements remain the same (described below as well).
API Changes
As part of this project we want you to support an additional filter criteria for **GET /projects ** API.
Eg. ```GET /projects/?filter=keyword%3dtest``` would search for the keyword 'test' in name, details.utm.code & description. It should return results where the keyword exists in **any** of those fields.
Performance
Performance of GET /projects api call is of utmost importance. Please use appropriate DB index for fields listed above.
Testing
Existing unit tests must be maintained, and new unit tests should be added for the new api / search fields.
Timeline
Pay attention to the shortened timeline and make sure you don't miss the deadlines.
Technology Overview
NodeJS
REST
Final Submission Guidelines
Submission Deliverables
Below is an overview of the deliverables:
1. Full code that covers all requirements (based on our repo structure)
2. A detailed readme in markdown format covering how to configure, run and verify your submission.
3. Winner will be asked to send a PR to our project repo on GitHub
Final Submission
For each member, the final submission should be uploaded via the challenge detail page on topcoder.com.