[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: xhelp system



Sent it to one of my friends for a bit of critique. The note on licensing is
interesting...
--Roger

------- Forwarded Message

From: "Dana M. Diederich" <dana@belegost.mit.edu>
Subject: Re: fwd: xhelp system
To: arma@MIT.EDU (Roger R Dingledine)
Date: Sat, 10 Jan 1998 23:05:21 -0500 (EST)

> 1. Introduction
> - ---------------
>   In order for the xhelp system to provide efficient and accurate
>   search results some form of database should be used, as opposed
>   to performing real time searching of the files themselves.
> 
>   The most portable method would be to access an SQL database, since
>   there are many databases which implement SQL which would allow
>   a switch to a different database depending on the system which is
>   being used.
This is only portable assuming a standardized interface, such as DBI under
perl.  I don't know of any RDBMS standardizing interfaces for other 
languages.
> 
>   The following section describes the components of the search
>   system, and the third section discusses the structure of the
>   database tables. The final section discusses implementation
>   details in brief.
> 
> 2. Search system components
> - ---------------------------
>   There are several components which are needed for the search system.
>   a. The database itself
>   b. Table creation and updating program
>   c. Modules to provide the search information for various document
> types
>   d. UI for the user to search the database.
> 
> 3. Database structure
> - ---------------------
>   The following tables would be used, the format being:
>   TABLE_NAME
>     COLUMN1
>     COLUMN2
>     ...
> 
>   TOPIC_TABLE
>     TOPIC_NAME PRIMARY KEY
> 
>   IMPLEMENTATION_TABLE
>     TOPIC_NAME FOREIGN KEY
>     FULL_FILE_NAME
> 
>   KEYWORD_TABLE
>     KEYWORD
>     TOPIC_NAME FOREIGN KEY
MySQL does not support foreign key directly.  Of course it can be simulated.

> 
>   Further tables may be added if further text should be searched. For
> example
>   if the body of the text should be searched then a table will need to
> be
>   created to provide the data.
> 
> 4. Implementation Discussion
> - ----------------------------
>   Implementation details are sketchy at the moment. For the time being
>   the database being used is mySql. It is free and easy to install and
>   use.
MySQL is not under GPL.  It's server can not be freely distributed.
It is only freely distributed for non profit.
> 
>   In order to acheive rapid prototyping the command line interface to
>   mySql will be used. This also allows other databases with command line
> 
>   interfaces to be substituted with minimal code change (especially
> since
>   sql is being used and is common between databases.)
> 
>   The table creation program is being written in a scripting language,
>   since it is both simple and provides easy interfaces to other programs
> 
>   The modules may be written in any language. They receive data on which
> 
>   file to get the information from via command line arguments. Data is
>   returned by writing to standard output.
I wrote a C program that will accept arbitrary SQL commands and filter the
results back to stdout.  This may be helpful for you.

Cheers.
-Dana

------- End of Forwarded Message