Forum .LRN Q&A: .LRN: Update on search
The target platform is .LRN 2.1 + OpenACS 5.1 + Oracle, however our goals for the architecture were easy portability across databases and OpenACS/.LRN versions. For that we backported callbacks from HEAD to 5.1 and put the backported procs into a compat-5.3-5.1 package. A package delivers search data to the search package through a callback procedure named datasource. The search package needs to be notified about new or changed content by inserting a row into the search_observer_queue - this is done via a trigger on the content-holding tables of a package. This approach makes porting between databases and OpenACS versions relatively easy, because we are not tied in too deeply into a datamodel version.
The second new table in the search package is the site_wide_index table which holds the package_id, the object_name, and a clob field named indexed_content. This is the table users will search against.
The datasource callbacks procs for most packages are done (including binary files) and we are inviting people to review our code or add more datasourcces.
The sourcecode will be committed to CVS pending some cleanup work, I'll announce once we have done it.
Work in the next weeks will focus on the user interface.