The project deliverable is addition of an application-wide search facility to an existing android 4.0.3 and higher field guide application. The application is currently designed and tested using the Samsung Galaxy Nexus Phone but it will be run on all phones and tablets with the Android 4.0.3 or higher platform version. That said, UI tailoring for tablets etc is out of scope for this engagement.
The application currently allows users to navigate through a set of animal or plant species to find the best match to the animal or plant that they have found in the wild.
This project is to add text search functionality to the application so that users can type search terms into a box that is part of the application action bar. The search operation will bring up a list of search results, each of which is a summary of a species that matches the search criteria. (The summary will include the species name, both common and scientific, as well as a picture of the species). Matches are determined by comparing the text of the search with the text contained in the XML files describing each species. Clicking on an entry in the list of search results will take users through to the existing detailed description page for the chosen species.
The data to be searched is stored in a set of XML files in the application data area of the mobile device.
The number of such XML files may vary but could be as large as 10,000 such documents on a single device.
The schemas for the XML files being searched is available at [url removed, login to view]
Search performance needs to be such that users can do real time keyword searches for species using sets of words like "big" and "shark" and "dangerous" without getting frustrated by long response times.
Users need to be be able to specify search terms that are required in the text being searched and search terms that must not be in the text of matching descriptions (by prefixing such terms with a hyphen '-').
The application is currently being developed in Eclipse (Indigo release) on Linux at the moment and the full source will be available in Subversion to the winning bidder.
All work will need to be committed into the Subversion repository by the person engaged to complete the project.
Programming is to be done in Java (and possibly XSLT/SQL/Xquery depending on the implementation strategy).
To be considered, bidders need to be able to demonstrate:
1. previous work on Android applications
2. previous work with XML data, especially using the limited libraries available on the Android platform
Bids will also be assessed based upon the proposed implementation strategy for the search function. Will they work directly off the XML files? Will they make use of the SQL database that comes with Android? What preprocessing steps, if any, will be done to get the data to be searched into a data structure that will support the required search performance?
Bidders need to be able to communicate well in English.
The successful bidder will be required to work with the code style of the existing application.
The developer of the existing application will work closely with the winning bidder to ensure that the winning bidder gets ongoing and active support to understand the existing application.
This project is the first in a sequence of discrete functionality and usability improvements that will be made to the existing application over the course of the coming months.