Challenge Overview
Project Overview
NASA needs your help building an enterprise search portal. NASA & Topcoder have completed the design and frontend code for a search interface that is intuitive for beginner to advanced users which allows users to search against NASA intranet as well as public internet data sets.
As part of this project, we are integrating the search engine (Solr Cloud) which will serve as a backend to the Enterprise Search User Interface and seek to expand the capabilities of the existing application.
Challenge Details
We already have developed the application that integrates the front end with the Solr indexing engine. All features have not been implemented yet and you can check out the existing Deployment Guide to determine which features currently exist.
As part of this challenge, you will be:
-
Allowing the user to filter the search results based on a date field present in the result.
-
Carrying out some bug fixes
Date field based Search
When the user enters a search query, in the results page, on the left sidebar, there are date field based searches:
-
Past 24 hours
-
Past Week
-
Past Month
-
Past Year
-
Customized Range (Set Date Range)
This is the “date field” based search that we are talking about. The user will enter a search query and then further narrow the results down by selecting a time period.
In the Solr indexes, you need to use the date field in the results. Your sorting and filtering will make use of this field in the result.
Do not filter directly in the UI using AngularJS - make sure that you pass the selected time period to Solr and let Solr search / filter / sort the results.
The Date field based Search should work for all tabs.
Date field based Sort
Above the date field based searches, you will find the “Sort By” section which has a Date field. You need to use the same logic for date fields as specified above for search, for the sorting feature too. When the user clicks on it, sort it by date and when the user clicks on it again, remove the date based sort. Note again that you need to let Solr sort the fields. Do not use AngularJS for this.
Update Documentation
While the Deployment Guide is good with all the verification steps listed for features that currently work in the app, you need to provide another document that describes how NASA can change the values for the filter. Provide a WORD document that describes:
-
How NASA can change the filters corresponding to tabs (and in the case of NASA Intranet tab, how they can change the NASA center and agencies)
-
How NASA can change the filters corresponding to content types
-
How NASA can change the filters corresponding to date
Note that having the filters as modular as possible is very important to this application and thus make any changes necessary that makes it easier for NASA to replace the filters with their own logic.
Bug Fixes / Enhancement
In the challenge forum, we will provide you with an excel file that lists the current issues with the application. You need to fix ALL of the issues with status UNRESOLVED as part of this challenge.
Points to Note
-
You are not building the prototype nor are you creating an application to integrate the Front End Prototype with the Solr Indexing engine. These have already been carried out and you can get the existing code from the links section below.
-
Make sure that the existing functionalities of the application are still working. You can check out the Deployment Guide’s Verification section to know more about the existing features.
-
Update the existing Deployment Guide by providing the Verification Steps for the “Date Field” based search and sort mentioned in this challenge. Kindly do not provide another Deployment Guide.
-
It should be possible to save the date based filters AND sort - see the existing code that saves the search query. This also means that you need to update the URL query parameters as it happens currently for the other filters.
-
Your submission should be as modular as possible. It should be easy for NASA to use the features elsewhere in their application with minimal effort - Best is to create it as a plugin or library that can be reused.
Links Provided
-
Front End Prototype - https://github.com/NASA-Tournament-Lab/Search-User-Interface
-
Front End Prototype (Hosted) - https://demo.topcoder.com/OPM/NSP/prototype/index.html
-
Application Integration Front end with Solr - https://github.com/NASA-Tournament-Lab/NTL-NASA-Search-Portal/tree/30051506-Date_Filtering/Source%20Code. Note that we have selected the branch for you (30051506-Date_Filtering). You will be working off this branch only. Create a fork of the application and checkout the selected branch.
Third Party Code / Libraries
Open source code is encouraged. All third party code / libraries must be open source and you must include the license in your submission. The license must allow us to modify/re-package the code as necessary. If you have any questions regarding this, please post in the forums. Submissions that include third party code without the proper license information will be disqualified if the third party code is found to be unusable due to license restrictions.
Final Submission Guidelines
-
Create a fork of the existing application and work off the 30051506-Date_Filtering branch.
-
Video is not required.
-
You DO NOT have to update the version numbers in the code headers
-
Make sure that you update the Verification section of the Deployment Guide with the new features created as part of this challenge.
-
Submit the updated application as a zip file in the Submit and Review tool for this challenge. You can submit the entire application or just the changes made.
- The winning participant will be asked to create a Pull Request with their submission to the 30051506-Date_Filtering branch.