From: Art Cancro Date: Mon, 16 May 2005 20:37:00 +0000 (+0000) Subject: * Added in skeleton modules for fulltext indexer X-Git-Tag: v7.86~4917 X-Git-Url: https://code.citadel.org/?a=commitdiff_plain;h=02b39a0e2c1f4c6289ef1d7596cb41ad552dde6b;p=citadel.git * Added in skeleton modules for fulltext indexer --- diff --git a/citadel/Makefile.in b/citadel/Makefile.in index 21053649b..2b52fb802 100644 --- a/citadel/Makefile.in +++ b/citadel/Makefile.in @@ -32,6 +32,7 @@ SERV_MODULES=serv_chat.o \ serv_mrtg.o \ serv_imap.o imap_fetch.o imap_misc.o imap_search.o \ imap_store.o imap_tools.o \ + serv_fulltext.o ft_wordbreaker.o \ serv_network.o \ serv_listsub.o \ serv_netfilter.o \ @@ -95,7 +96,7 @@ SOURCES=aidepost.c auth.c base64.c chkpwd.c citadel.c citadel_ipc.c \ serv_spam.c serv_test.c serv_mrtg.c serv_spam.c serv_upgrade.c \ serv_vandelay.c serv_vcard.c server_main.c setup.c snprintf.c \ stress.c support.c sysdep.c tools.c user_ops.c userlist.c \ - whobbs.c vcard.c serv_notes.c + whobbs.c vcard.c serv_notes.c serv_fulltext.c ft_wordbreaker.c DEP_FILES=$(SOURCES:.c=.d) diff --git a/citadel/ft_wordbreaker.c b/citadel/ft_wordbreaker.c new file mode 100644 index 000000000..c9d9db259 --- /dev/null +++ b/citadel/ft_wordbreaker.c @@ -0,0 +1,46 @@ +/* + * $Id$ + * + * Default wordbreaker module for full text indexing. + * + */ + + +#include "sysdep.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + +#include +#include +#include +#include "citadel.h" +#include "server.h" +#include "sysdep_decls.h" +#include "citserver.h" +#include "support.h" +#include "config.h" +#include "serv_extensions.h" +#include "database.h" +#include "msgbase.h" +#include "control.h" +#include "tools.h" +#include "ft_wordbreaker.h" + + diff --git a/citadel/ft_wordbreaker.d b/citadel/ft_wordbreaker.d new file mode 100644 index 000000000..827722090 --- /dev/null +++ b/citadel/ft_wordbreaker.d @@ -0,0 +1,59 @@ +ft_wordbreaker.o ft_wordbreaker/.o ft_wordbreaker.d: ft_wordbreaker.c sysdep.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib/gcc/i386-redhat-linux/3.4.2/include/stddef.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/sched.h /usr/include/alloca.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib/gcc/i386-redhat-linux/3.4.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/signal.h \ + /usr/include/bits/signum.h /usr/include/bits/siginfo.h \ + /usr/include/bits/sigaction.h /usr/include/bits/sigcontext.h \ + /usr/include/asm/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/bits/sigthread.h /usr/include/pwd.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/sys/time.h \ + /usr/include/sys/wait.h /usr/include/sys/resource.h \ + /usr/include/bits/resource.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/string.h \ + /usr/lib/gcc/i386-redhat-linux/3.4.2/include/limits.h \ + /usr/lib/gcc/i386-redhat-linux/3.4.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h citadel.h sysconfig.h typesize.h \ + ipcdef.h server.h /usr/include/openssl/ssl.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/opensslconf-i386.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/md2.h /usr/include/openssl/md4.h \ + /usr/include/openssl/md5.h /usr/include/openssl/sha.h \ + /usr/include/openssl/ripemd.h /usr/include/openssl/des.h \ + /usr/include/openssl/des_old.h /usr/include/openssl/ui_compat.h \ + /usr/include/openssl/ui.h /usr/include/openssl/rc4.h \ + /usr/include/openssl/rc2.h /usr/include/openssl/blowfish.h \ + /usr/include/openssl/cast.h /usr/include/openssl/aes.h \ + /usr/include/openssl/rsa.h /usr/include/openssl/asn1.h \ + /usr/include/openssl/bn.h /usr/include/openssl/dsa.h \ + /usr/include/openssl/dh.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/kssl.h /usr/include/openssl/pem.h \ + /usr/include/openssl/pem2.h /usr/include/openssl/ssl2.h \ + /usr/include/openssl/ssl3.h /usr/include/openssl/tls1.h \ + /usr/include/openssl/ssl23.h sysdep_decls.h /usr/include/pthread.h \ + /usr/include/sched.h /usr/include/bits/initspin.h citserver.h \ + serv_extensions.h support.h config.h database.h msgbase.h control.h \ + tools.h ft_wordbreaker.h diff --git a/citadel/ft_wordbreaker.h b/citadel/ft_wordbreaker.h new file mode 100644 index 000000000..d093489f5 --- /dev/null +++ b/citadel/ft_wordbreaker.h @@ -0,0 +1,12 @@ +/* + * $Id$ + * + */ + + +/* + * This is an ID for the wordbreaker module. If we do pluggable wordbreakers + * later on, or even if we update this one, we can use a different ID so the + * system knows it needs to throw away the existing index and rebuild it. + */ +#define FT_WORDBREAKER_ID 0x0001 diff --git a/citadel/ft_wordbreaker.o b/citadel/ft_wordbreaker.o new file mode 100644 index 000000000..6e341fe90 Binary files /dev/null and b/citadel/ft_wordbreaker.o differ diff --git a/citadel/serv_extensions.c b/citadel/serv_extensions.c index f066846d7..e6922b8ce 100644 --- a/citadel/serv_extensions.c +++ b/citadel/serv_extensions.c @@ -123,6 +123,7 @@ void initialize_server_extensions(void) serv_upgrade_init(); serv_vandelay_init(); serv_vcard_init(); + serv_fulltext_init(); } diff --git a/citadel/serv_fulltext.c b/citadel/serv_fulltext.c new file mode 100644 index 000000000..0cbcd2e24 --- /dev/null +++ b/citadel/serv_fulltext.c @@ -0,0 +1,79 @@ +/* + * $Id$ + * + * This module handles fulltext indexing of the message base. + * + */ + + +#include "sysdep.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + +#include +#include +#include +#include "citadel.h" +#include "server.h" +#include "sysdep_decls.h" +#include "citserver.h" +#include "support.h" +#include "config.h" +#include "serv_extensions.h" +#include "database.h" +#include "msgbase.h" +#include "control.h" +#include "tools.h" +#include "serv_fulltext.h" +#include "ft_wordbreaker.h" + + +void do_fulltext_indexing(void) { + lprintf(CTDL_DEBUG, "do_fulltext_indexing() started\n"); + + /* + * Check to see whether the fulltext index is up to date; if there + * are no messages to index, don't waste any more time trying. + */ + lprintf(CTDL_DEBUG, "CitControl.MMhighest = %ld\n", CitControl.MMhighest); + lprintf(CTDL_DEBUG, "CitControl.MMfulltext = %ld\n", CitControl.MMfulltext); + if (CitControl.MMfulltext >= CitControl.MMhighest) { + lprintf(CTDL_DEBUG, "Nothing to do!\n"); + return; + } + + /* + * If we've switched wordbreaker modules, burn the index and start + * over. FIXME write this... + */ + + + lprintf(CTDL_DEBUG, "do_fulltext_indexing() finished\n"); + return; +} + + +/*****************************************************************************/ + +char *serv_fulltext_init(void) +{ + CtdlRegisterSessionHook(do_fulltext_indexing, EVT_TIMER); + return "$Id$"; +} diff --git a/citadel/serv_fulltext.d b/citadel/serv_fulltext.d new file mode 100644 index 000000000..3b7068466 --- /dev/null +++ b/citadel/serv_fulltext.d @@ -0,0 +1,59 @@ +serv_fulltext.o serv_fulltext/.o serv_fulltext.d: serv_fulltext.c sysdep.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib/gcc/i386-redhat-linux/3.4.2/include/stddef.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/sched.h /usr/include/alloca.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib/gcc/i386-redhat-linux/3.4.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/signal.h \ + /usr/include/bits/signum.h /usr/include/bits/siginfo.h \ + /usr/include/bits/sigaction.h /usr/include/bits/sigcontext.h \ + /usr/include/asm/sigcontext.h /usr/include/bits/sigstack.h \ + /usr/include/bits/sigthread.h /usr/include/pwd.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/sys/time.h \ + /usr/include/sys/wait.h /usr/include/sys/resource.h \ + /usr/include/bits/resource.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/string.h \ + /usr/lib/gcc/i386-redhat-linux/3.4.2/include/limits.h \ + /usr/lib/gcc/i386-redhat-linux/3.4.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h citadel.h sysconfig.h typesize.h \ + ipcdef.h server.h /usr/include/openssl/ssl.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/opensslconf-i386.h /usr/include/openssl/comp.h \ + /usr/include/openssl/crypto.h /usr/include/openssl/stack.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/opensslv.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/bio.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/evp.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/md2.h /usr/include/openssl/md4.h \ + /usr/include/openssl/md5.h /usr/include/openssl/sha.h \ + /usr/include/openssl/ripemd.h /usr/include/openssl/des.h \ + /usr/include/openssl/des_old.h /usr/include/openssl/ui_compat.h \ + /usr/include/openssl/ui.h /usr/include/openssl/rc4.h \ + /usr/include/openssl/rc2.h /usr/include/openssl/blowfish.h \ + /usr/include/openssl/cast.h /usr/include/openssl/aes.h \ + /usr/include/openssl/rsa.h /usr/include/openssl/asn1.h \ + /usr/include/openssl/bn.h /usr/include/openssl/dsa.h \ + /usr/include/openssl/dh.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/kssl.h /usr/include/openssl/pem.h \ + /usr/include/openssl/pem2.h /usr/include/openssl/ssl2.h \ + /usr/include/openssl/ssl3.h /usr/include/openssl/tls1.h \ + /usr/include/openssl/ssl23.h sysdep_decls.h /usr/include/pthread.h \ + /usr/include/sched.h /usr/include/bits/initspin.h citserver.h \ + serv_extensions.h support.h config.h database.h msgbase.h control.h \ + tools.h serv_fulltext.h ft_wordbreaker.h diff --git a/citadel/serv_fulltext.h b/citadel/serv_fulltext.h new file mode 100644 index 000000000..919922f94 --- /dev/null +++ b/citadel/serv_fulltext.h @@ -0,0 +1,6 @@ +/* + * $Id$ + * + */ + +char *serv_fulltext_init(void); diff --git a/citadel/serv_fulltext.o b/citadel/serv_fulltext.o new file mode 100644 index 000000000..dbf664b4d Binary files /dev/null and b/citadel/serv_fulltext.o differ diff --git a/citadel/server.h b/citadel/server.h index c42ac736b..8281869e1 100644 --- a/citadel/server.h +++ b/citadel/server.h @@ -166,6 +166,8 @@ struct CitControl { long MMnextuser; /* highest user number on system */ long MMnextroom; /* highest room number on system */ int version; /* Server-hosted upgrade level */ + int fulltext_wordbreaker; /* ID of wordbreaker in use */ + long MMfulltext; /* highest message number indexed */ }; extern struct CitContext *ContextList;