-- -- Copyright (C) 2005 MIT -- -- This file is part of dotLRN. -- -- dotLRN is free software; you can redistribute it and/or modify it under the -- terms of the GNU General Public License as published by the Free Software -- Foundation; either version 2 of the License, or (at your option) any later -- version. -- -- dotLRN is distributed in the hope that it will be useful, but WITHOUT ANY -- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -- FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -- details. -- -- -- Create database tables for .LRN site-wide search -- -- @author openacs@dirkgomez.de -- @version $Id: search-tables-create.sql,v 1.7 2006/08/31 07:31:29 emmar Exp $ -- @creation-date 13-May-2005 -- -- Partly ported from ACES. -- Central table for site-wide search. create table site_wide_index ( object_id integer constraint sws_index_pk primary key constraint sws_index_fk references acs_objects(object_id) on delete cascade, object_name varchar(4000), indexed_content clob, -- Dirk Gomez: no not null constraint because we also want to -- be able to index objects which are not tied to an object, -- in particular people. package_id integer constraint swi_package_id_fk references apm_packages on delete cascade, -- Dirk Gomez: This is a .LRNism. It looks like .LRN has not -- only object-granular permiissions, but also -- community-granular ones. In search we need not only check -- whether a user has the right to view this object, but also -- its community. In pure OpenACS this should always be a -- null column and it should have no referential integrity. -- community_id integer -- constraint swi_community_id_fk -- references dotlrn_communities_all -- on delete cascade, -- DAVEB: We'll need to add a way for dotlrn to integrate -- without tying it into the search table. -- Dirk Gomez: That's the place to put an object's relevant -- date which is part of the ranking function. In calendar -- this is the item date, in forum it could be the last reply -- date to a thread etc. relevant_date date ); create table search_observer_queue ( object_id integer, event_date date default sysdate, event varchar(6) constraint search_observer_queue_event_ck check (event in ('INSERT','DELETE','UPDATE')) ); -- Intermedia sometimes is painful to debug, so I added a logging -- mechanism which relies on Oracle's autonomous transactions: DML -- statements are committed immediately so you can access this data -- from a different session right away. create table sws_log_messages ( logmessage varchar2(4000), logtime date default sysdate);