Forum OpenACS Q&A: Response to Example Service Contract for bboard (Search/OpenFTS)

Gregor, the impl name has to be the same as the acs object_type of the items you want to index.

So the impl_name should be bboard_message.

One way to check if the items are being indexed is to check the search_observer_queue table. After you add the items to the queue, they should only stay in there for 30 secs or so until the indexer runs again. It is a scheduled proc.

You can also do a select count(*) from txt. This is the actual table that holds the index. The count will tell you how many items have been indexed.

Here are my service contract implementations for forums:

ad_library {

    Forums Library - Search Service Contracts

    @creation-date 2002-08-07
    @author Dave Bauer 
    @cvs-id $Id: 

}

namespace eval forum::message {

ad_proc datasource { message_id } {
    @param message_id
    @author dave@thedesignexperience.org
    @creation_date 2002-08-07

    returns a datasource for the search package
    this is the content that will be indexed by the full text
    search engine

} {
    forum::message::get -message_id $message_id -array message
	set datasource(object_id) $message(message_id)
	set datasource(title) $message(subject)
	set datasource(content) $message(content)
	set datasource(keywords) ""
	set datasource(storage_type) text
	set datasource(mime) "text/html"
    return [array get datasource]
}

ad_proc url { message_id } {
    @param message_id
    @author dave@thedesignexperience.org
    @creation_date 2002-08-07

    returns a url for a message to the search package

} {
    forum::message::get -message_id $message_id -array message
    set forum_id $message(forum_id)
    return "[ad_url][db_string select_forums_package_url {}]message-view?message_id=$message_id"
}

}