Title Improvements to the Search Page
Student Sami Mazen Barakat
Mentor Randy Kolenko
Abstract
Currently the Geeklog search page is not as effective as it could be. As there is a lot of content spread across several plugins it takes a long time to complete search queries. Also the page is broken up into separate tables for each plugin making it harder to find the result you are after. This project will aim at improving responsiveness, functionality and finally adding new features to the search page.

The responsiveness of the page can be dramatically improved by searching the database using Full Text indexes. This will reduce the query time which will shorten the loading time of the results page. The results themselves will be organised into a single table that will be ordered by the relevance of the result then by its popularity. That will ensure that the result the user is searching for appears in the first few results.

Further improvements will be done to the user interface allowing it to be more interactive. The user will be able to manipulate the results by using filters, sorting by popularity or date, highlighting the search terms, how many results to display per page and moving back and forth between the pages. This improved functionality will be possible by the use of AJAX, it will also lessen the load on the server as whole page refreshes wont be required.

A tag cloud will also be implemented to quickly make visible the commonly searched for terms in the Geeklog web site. The tag cloud will also have the option of being disabled on more professional web sites. The cloud itself can be displayed anywhere on the web site giving the users complete control over it.

These changes require updates to the API system currently in use by plugins. For the majority of plugins the way the results are formatted will need to be modified. I will make it simple for plugin developers to upgrade their API code to take advantage of the new search features.

The problems faced by this project is the improvements must be compatible with the current system requirements of Geeklog. So measures will be taken to allow fall-back options for databases that don't support Full Text indexing. Fall-back options will also need to be taken on plugins that use the old API system to give their developers time to move onto the new one. The solution to this is to have separate functions that will construct query strings differently depending whether or not the database supports Full Text indexing. Functions will also be needed to handle calls to the old and new search APIs.