Searching Edit This Page (Postgresql/OpenFTS)

ETP Documentation :ETP Search

Using OpenFTS Search and ETP

The Edit-this-page package will automatically register a Search FtsContentProvider service contract for any new content types that are defined using etp::define_application.

By default it will allow indexing of the title, content, and description attributes of an item. To add indexing of custom content_type attributes a developer creates a specially named Tcl proc: etp::search::content_type where content_type is the customer content type you have created. For a sample Tcl proc see edit-this-page/tcl/etp-sc-procs.tcl for etp::search::etp_page_revision. The calling proc will pass in an array name. The custom search proc should modify the passed in array using upvar as per the example. The elements of that array will include: object_id, title, content, mime_type, keywords, and storage_type. The custom search proc should only modify the title, content, and keywords elements of the array. The etp::search namespace must be used to define the Tcl Proc.

Sample Tcl Proc:

      namespace eval etp::search {}

ad_proc etp::search::etp_page_revision {
    {-array_name ""}
} {
    Sample Custom content type search proc
    We are allowed to add/modify the elements for the
    search compatible datasource array via upvar
} {
    if {[exists_and_not_null array_name]} {
        upvar search_array $array_name
        ns_log notice "ETP:search:etp_page_revision
        # this proc would modify the "search_array" array
        # valid elements include search_array(title),
        # search_array(content), and search_array(keywords)

To add previosuly created items to the search index execute the following query in psql:

insert into search_observer_queue
(select revision_id, 
 from cr_revisions r,
      cr_items i 
 where r.item_id=i.item_id 
   and i.content_type='etp_page_revision' 
   and r.revision_id = i.live_revision);

Dave Bauer
Last modified: Mon Jan 27 11:25:38 EST 2003