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: Sample 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.
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
arrayname:$array_name"
# 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, current_timestamp, 'INSERT' 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);