Index: openacs-4/packages/search/tcl/search-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/search/tcl/search-procs.tcl,v diff -u -r1.7 -r1.8 --- openacs-4/packages/search/tcl/search-procs.tcl 13 Mar 2002 22:50:53 -0000 1.7 +++ openacs-4/packages/search/tcl/search-procs.tcl 2 Jul 2002 01:52:39 -0000 1.8 @@ -1,55 +1,55 @@ +ad_library { + + full-text search engine + + @author Neophytos Demetriou (k2pts@yahoo.com) + @version $Id$ + +} + ad_proc search_indexer {} { @author Neophytos Demetriou } { set driver [ad_parameter -package_id [apm_package_id_from_key search] FtsEngineDriver] - db_foreach search_observer_queue_entry { - select object_id, date, event - from search_observer_queue - order by date asc - } { + db_foreach search_observer_queue_entry {} { - switch $event { - INSERT { - set object_type [db_exec_plsql get_object_type "select acs_object_util__get_object_type($object_id)"] - if [acs_sc_binding_exists_p FtsContentProvider $object_type] { - array set datasource [acs_sc_call FtsContentProvider datasource [list $object_id] $object_type] - search_content_get txt $datasource(content) $datasource(mime) $datasource(storage_type) - acs_sc_call FtsEngineDriver index [list $datasource(object_id) $txt $datasource(title) $datasource(keywords)] $driver - } - # Remember seeing this object so we can avoid reindexing it later - set seen($object_id) 1 - } - DELETE { - acs_sc_call FtsEngineDriver unindex [list $object_id] $driver - } - UPDATE { - # Don't bother reindexing if we've already inserted/updated this object in this run - if { ![info exists seen($object_id)] } { - set object_type [db_exec_plsql get_object_type "select acs_object_util__get_object_type($object_id)"] - if [acs_sc_binding_exists_p FtsContentProvider $object_type] { - array set datasource [acs_sc_call FtsContentProvider datasource [list $object_id] $object_type] - search_content_get txt $datasource(content) $datasource(mime) $datasource(storage_type) - acs_sc_call FtsEngineDriver update_index [list $datasource(object_id) $txt $datasource(title) $datasource(keywords)] $driver - } - # Remember seeing this object so we can avoid reindexing it later - set seen($object_id) 1 - } - } - } + switch $event { + INSERT { + set object_type [acs_object_type $object_id] + if {[acs_sc_binding_exists_p FtsContentProvider $object_type]} { + array set datasource [acs_sc_call FtsContentProvider datasource [list $object_id] $object_type] + search_content_get txt $datasource(content) $datasource(mime) $datasource(storage_type) + acs_sc_call FtsEngineDriver index [list $datasource(object_id) $txt $datasource(title) $datasource(keywords)] $driver + } + # Remember seeing this object so we can avoid reindexing it later + set seen($object_id) 1 + } + DELETE { + acs_sc_call FtsEngineDriver unindex [list $object_id] $driver + } + UPDATE { + # Don't bother reindexing if we've already inserted/updated this object in this run + if {![info exists seen($object_id)]} { + set object_type [acs_object_type $object_id] + if {[acs_sc_binding_exists_p FtsContentProvider $object_type]} { + array set datasource [acs_sc_call FtsContentProvider datasource [list $object_id] $object_type] + search_content_get txt $datasource(content) $datasource(mime) $datasource(storage_type) + acs_sc_call FtsEngineDriver update_index [list $datasource(object_id) $txt $datasource(title) $datasource(keywords)] $driver + } + # Remember seeing this object so we can avoid reindexing it later + set seen($object_id) 1 + } + } + } - db_exec_plsql search_observer_dequeue_entry { - select search_observer__dequeue( - :object_id, - :date, - :event - ); - } + db_exec_plsql search_observer_dequeue_entry {} + } + } - ad_proc search_content_get { _txt content @@ -58,7 +58,7 @@ } { @author Neophytos Demetriou - @param content + @param content holds the filename if storage_type=file holds the text data if storage_type=text holds the lob_id if storage_type=lob @@ -68,25 +68,22 @@ set txt "" switch $storage_type { - text { - set data $content - } - file { - set data [db_blob_get data "select '$content' as content, 'file' as storage_type"] - } - lob { + text { + set data $content + } + file { + set data [db_blob_get get_file_data {}] + } + lob { db_transaction { - set data [db_blob_get data "select $content as content, 'lob' as storage_type"] + set data [db_blob_get get_lob_data {}] } - } + } } search_content_filter txt data $mime - } - - ad_proc search_content_filter { _txt _data @@ -98,19 +95,15 @@ upvar $_data data switch $mime { - {text/plain} { - set txt $data - } - {text/html} { - set txt $data - } + {text/plain} { + set txt $data + } + {text/html} { + set txt $data + } } } - - - - ad_proc search_choice_bar { items links values {default ""} } { @author Neophytos Demetriou } { @@ -119,23 +112,19 @@ set return_list [list] foreach value $values { - if { [string compare $default $value] == 0 } { - lappend return_list "[lindex $items $count]" + if {[string compare $default $value] == 0} { + lappend return_list "[lindex $items $count]" } else { - lappend return_list "[lindex $items $count]" + lappend return_list "[lindex $items $count]" } incr count } - if { [llength $return_list] > 0 } { + if {[llength $return_list] > 0} { return "[join $return_list " "]" } else { return "" } - -} - - - +}