I’ve updated my proposal just a bit. again
Check it out.
Proposal: Add full text-search support to Bricolage.
KinoSearch is a search utility written in Perl.
Currently at version 0.162, it supports full text search.
Support for this utility will be added to Bricolage.
Synopsis:
The aim of this project is to include full text-search support to the content mangement system, Bricolage. Bricolage already has search capabilities. A full text-search will be integrated to the already existent search API.
To implement this four major requirements will have to be fulfilled:
An InvIndex will have to be generated for the all the data placed in each table or for the documents. An indexer function will be written which creates an InvIndex for all the documents. I intend to begin with adding full text search to objects like stories, media and templates.
Next a method will have to be added to the search API which facilitates the conversion of the search query to an Invindex using the same analyzer that was used to create the Invindex for the documents so that the complete text that is to be searched for can be recognized within any table simply by using the Invindex for the search query.
A UI widget already exists in Bricolage. The UI widget will have to be adapted
to the modified search API. Callbacks already exist for all the basic functionalities
of a search UI. A controller function will be used to utilize these functios and add
additional full text search feature. The search will required an updated set of fields
for which the search has to be executed. The name field should now also be able to take
in full text strings. When the results are found, the contexts of the corresponding
results will also need to be displayed
Since Bricolage currently boasts an array of SOAP integrated APIs, the modified
search API, or rather the full-text search API, will naturally be integrated too.
So the API should be further appended to hold functions to code the users’ search
request into XML and send it across to the server and a function that recieves the
result from the server and decodes it before displaying it the user.
The project will support not only postgresql but mysql and so on. The function that generates the InvIndex and will be designed as though it were a plug-in and if someone wanted to use a search other than KinoSearch, like Lucene or even tsearch, could use an alternate indexer function which would generate the necessary index. The search function could also be designed as a plug-in or the parameters passed to the search function could vary according to the indexer function used.
Also there The installer script will have be modified to recognize and use an already installed version of KinoSearch or install KinoSearch if its not found.
Proposed Road Map:
milestone: Start project
<May 28>.Begin Research on implementation of the full text search and the current
state of the search API in the Bricolage System
<June 2> Begin Designing the changes to the table structure and the changes to the
search API
milestone: Submission of initial design and specification.
<June 5> The design of planned additions and changes and their respective changes will
be submitted.
Coding begins
milestone: Function for incrementing Invindex
<June 12> Submission of code that generate the InvIndex for the tables holding data or documents
testing and verification of given code.
milestone: Modification of the Search API
<June 20> Submission of modifications and additions to the existing search API
testing and verification of submitted changes
milestone: Integration to the UI widget
<June 25> The Search UI widget is integrated with the modified API
<June 27> The UI widget is modified to hold the full text search results
testing and verification
milestone: SOAP Integration
<July 7> The modified search API will be integrated with SOAP
testing and verification
milestone: Final Project Submission
<July 17> The Final testing and verification process will come to an end and
the full text search feature will be fully enabled.
################################################################################################