Hi,
OpenACS newbie here.
I have installed dotLRN 2.3.0, Aolserver 4.5 and PostgreSQL 8.4.
I have the following problem and doubt with the Search Package:
PROBLEM:
I have installed the Search package and the Tsearch2 driver, and mounted the search package. If I go to http://My_server/admin/site-map/, I can see:
*************
URL INSTANCE PACKAGE TYPE
search Search Search
*************
The bindings for the FtsContentProvider and FtsEngineDriver service contracts are enabled. If I go to http://My_Server:8000/acs-service-contract, I can see:
*************
Valid Installed Bindings
IMPLEMENTATION NAME OWNER
content_revision acs-content-repository
image acs-content-repository
content_template acs-content-repository
file_storage_object file-storage
cal_item calendar
acs_event calendar
faq faq
faq_q_and_a faq
forums_forum forums
forums_message forums
news news
as_assessments assessment
pa_album photo-album
pa_photo photo-album
tsearch2-driver tsearch2-driver
*************
But, when I try to use the search package (at http://My_server/search) with the "estrategia" word (that appears in the FAQ inside of a question/answer), I obtain the following:
(1) The following error message:
"Error in include template /var/lib/aolserver/service0/packages/dotlrn/www/dotlrn-search": No script or template found for page '/var/lib/aolserver/service0/packages/dotlrn/www/dotlrn-search'"
(2) And next the message: "Your search - estrategia - did not match any content."
In the log entries appear:
**************
Error: Tcl exception:
Database operation "0or1row" failed
(exception NSINT, "Query returned more than one row.")
while executing
"ns_pg_bind 0or1row nsdb0 {
select package_id
from apm_packages
where package_key = :package_key
}"
("uplevel" body line 1)
invoked from within
"uplevel $ulevel [list ns_pg_bind $type $db $sql]"
("postgresql" arm line 2)
invoked from within
"switch $driverkey {
oracle {
return [uplevel $ulevel [list ns_ora $type $db $sql] $args]
}
..."
invoked from within
"db_exec 0or1row $db $full_name $sql"
invoked from within
"set selection [db_exec 0or1row $db $full_name $sql]"
("uplevel" body line 2)
invoked from within
"uplevel 1 $code_block "
invoked from within
"db_with_handle -dbn $dbn db {
set selection [db_exec 0or1row $db $full_name $sql]
}"
(procedure "db_string" line 27)
invoked from within
"db_string apm_package_id_from_key {
select package_id from apm_packages where package_key = :package_key
} -default 0"
(procedure "apm_package_id_from_key_mem" line 2)
invoked from within
"apm_package_id_from_key_mem search"
("eval" body line 1)
invoked from within
"eval $script"
invoked from within
"ns_cache eval util_memoize $script {
list $current_time [eval $script]
}"
(procedure "util_memoize" line 20)
invoked from within
"util_memoize "apm_package_id_from_key_mem $package_key""
(procedure "apm_package_id_from_key" line 2)
invoked from within
"apm_package_id_from_key search"
(procedure "search::indexer" line 3)
invoked from within
"search::indexer"
("eval" body line 1)
invoked from within
"eval [concat [list $proc] $args]"
(procedure "ad_run_scheduled_proc" line 46)
invoked from within
"ad_run_scheduled_proc {t f 60 search::indexer {} 1183466948 0 f}"
[03/Jul/2007:09:50:08][13516.2962897808][-sched:idle1-]
Notice: starting
[03/Jul/2007:09:50:17][13516.2994797456][-conn:2-] Error: Error in include template "/var/lib/aolserver/service0/packages/dotlrn/www/dotlrn-search": No script or template found for pa
ge '/var/lib/aolserver/service0/packages/dotlrn/www/dotlrn-search'
No script or template found for page '/var/lib/aolserver/service0/packages/dotlrn/www/dotlrn-search'
while executing
"error "No script or template found for page '$__adp_stub'""
invoked from within
"template::adp_parse [template::util::url_to_file "/packages/dotlrn/www/dotlrn-search" "$__adp_stub"] [list]"
*************
Do I need to do something more in order to have the search package running ok, and the content of the packages that implement FtsContentProvider service contract indexed (as for example populate manually the table: search_observer_queue).
I have restarted the services, but nothing at all.
DOUBT:
How can I mount a search package that only search the content of a specific package (for example de FAQ package)?
I think that a possible solution is uninstall all the FtsContentProvider service contract implementations, except the service contract implementation of the package that should be indexed (in the case of the example: the FAQ package). But these solution will disable those service contracts implementation for all the mounted search packages, then I won't be able to have a Wide Search Function (as an example).
Another possible solution is to limit the search to a subsite using the Search Package's parameter SubsiteSearchP ("If mounted in a subsite should the search be restricted to items in the subsite by default. Requires that package_id in acs_objects be properly populated."). But my doubt is about the scope of the "subsite", that is if in the subsite I have mounted the Forum and FAQ, then the search will be over the Forum and FAQ.
Is there a way to implement an specific search as in the case of the search over the Forum Package?.
I appreciate a lot your help!
Jorge.