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 a new 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 the content type of the result.
-
Carrying out some bug fixes
Content Type based Search
When the user enters a search query, in the results page, on the left sidebar, at the top there are four content types listed:
-
All
-
Articles
-
Videos
-
Images
This is the “content type” search that we are talking about. The user will enter a search query and then further narrow the results down by selecting a content type.
In the Solr index, the attribute “type” refers to the content type of the result. You need to use this attribute to determine. Note that the schema for this attribute is an array.
Do not filter directly in the UI using AngularJS - make sure that you pass the selected content type to Solr and let Solr search / filter the results. In case “All” is selected, you don’t have to instruct Solr to filter by the “type” attribute at all.
There is a difference in the prototype and the actual application though. While the prototype contains only 3 types for content type, the actual application will contain 13. We have provided an excel sheet in the challenge forums where we have mapped the values that will exist in the Solr index to the values that need to be shown in the UI.
Since there will be 13 unique content types (14 including “All”), you need show a “Show More” / “Show Less” text in the content type section on the left sidebar - the user will initially only see the first (alphabetically) 3 types (and “All”) and on clicking “Show More”, the section will expand and show all 13 types. The “Show More” text will be replaced by a “Show Less” option that will collapse the section and show the 3 types as before.
The Content Type Search should work for all tabs.
Bug Fixes
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 them 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 Content Type based search mentioned in this challenge. Kindly do not provide another Deployment Guide.
-
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. Provide the 13 content types as a configuration for example.
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/30051504-content_type/Source%20Code. Note that we have selected the branch for you (30051504-content_type). 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 30051504-content_type branch.
-
Video is not required.
-
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.
- The winning participant will be asked to create a Pull Request with their submission to the 30051504-content_type branch.