!8 -Chapter 6
Thoughts on the future development of cirt

A'J_*Dividing cirt into two processes

6^_L_.J_. The problem of size
At present cirt is about as large as it can get without running outof core space, so before more facilities can be added some way roundthis problem will have to be found. There are three obvious approaches
to the problem:
1

Upgrade the hardware to a processor
spaces (11-24?).

2

Install a version of UNIX which supports overlaying. There are anumber of these available: e.g. the DEC release of UNIX (which theyhave in the Computer Science Department at TCU), the Berkeley
release and probably others. Whatever version was used would haveto be compatible with the network software. This question has notbeen investigated fully.

3Split the program into two processes. This is quite an attractive
option for a number of reasons and is discussed in detail below.

A*JL*A*which

supports

separate

1/D

Splitting the process

A natural way to divide the program is as follows
Process 1

front end
search algorithm

Process 2->
universal
searchprotocolresults of searches,
lists of seen docs,
relevance assesments,etc.
<-X29 and Databasedependent code.

->
Hostsearchdocs retrieved
statements , e.g.
Datafrom host but not documents
Staryet sent to PI
etc.
<Essentialy Process 1 would contain the code now in cirt.c and search.c
along with any improved front-end code, additional search algorithms
etc. Process 2 would contain the code in x29.c and lex.yy.c. The codein print.c would have to be rewritten and the new code would be split
between the two processes.
;
The idea is that Process 2 should contain all the Host and Databasedependent code and that the two processes should talk to each otherusing some sort of universal search protocol (USP). Process 2 then converts between the USP and the Search statements and document listings

- 29 -

required by and sent from the Host. How universal the USP can reallybe, is debatable.
Probably the best thing to do is to make it asuniversal as possible consistent with easy compatability with Data-Star.
This setup has a number of advantages:(i)

It should solve the space problem, at least for a while.

(ii)

The viewing of documents will be speeded up because it will bepossible for Process 2 to be retrieving and storing documents
while Process 1 is waiting to be told the verdict on the previous
document.

(iii)

The data base dependent code is all in one process and it should(if the USP is adequate) be possible to convert to another Hostby just rewriting Process 2.

To set against that there may besearch process.

aslight

slowing

downofthe6_•JL^- Communication between the processes
This should be done with pipes andBriefly the way it is done is as follows.

possiblyinterceptedkills.

Process I is executed in the usual way from the shell.
Process 1
then calls pipe twice to set up a two way communication channel. It
then calls fork and if fork returns zero it executes Process 2 using
execl and passes the file descriptors returned by pipe (one read and onewrite) as arguments. The integer file descriptors should be converted
to ascii strings before passing them and then converted back to integers
by Process 2.
It will probably prove to be necessary for Process 1 to be able tointerrupt Process 2 while Process 2 is waiting for material from theHost. This would have to be done using signal and kill. A descriptionof pipe, fork, execl, signal and kill can be found in chapter 2 of theUNIX manual.
<6._1_.4_. Flow of Control in P2
Normaly P2 would run through a cycle as follows
1.

Get next USP command from PI

2.

Hold dialog with Host.

3.

Send reply to PI

4.

Goto 1.

Sometimes there would be no stage
should get a reply.

2

but

probably

everycommand

- 30 -

Occasionally it will be necessary to force P2 to stop waiting for
Input from the Host and to reply to a command. This could be done1 byusing an intercepted kill but this sort of interrupt would be kept foremergencies.
6.1.5.

The Universal Search Protocol

A suggested outline for the USP is described in Chapter 7.
A*JL*_6. #Notes

1

In addition to providing different versions
Hosts it would be possible to provide
searches on its own database.

A'!.*

Other Additionsof P2 for different
a P2 which actualy did

There are a number of facilities we would have liked to haveincluded in cirt but either we didn't have time or there wasn't room.
These are listed below.
6_.2.1.

Save and Restore

It would be useful to be able to save a search so that it can berestored and completed at a later date. This could be used in conjunction with the Data-Star ..Off Continue command.
There should be no
great difficulties but there are a number of different data structures
which would have to be saved. These include the search tree, the query,the list of seen documents and a number of single parameters.
6.2.2.

Term deletion and improved term addition

It might be useful to be able to delete query terms which have beenused in a search but this would involve extensive modification of thesearch tree. This would be made simpler if instead of storing thesearch as a number it could be stored as a string consisting of aboolean combination of search numbers.
Another possibility which should be looked at but might prove
unworkable is the addition of new terms within the search tree. Thismight prove more efficient for terms with low frequencies and highweights.
A third possibility, mentioned in Chapter 3, is the addition of newterms by ORing with existing terms in the search tree.
J^.2.3.

Other search algorithms

At some time the Jamieson algorithm ought to be implemented on aproper data base, if only for comparison. We think that it will remain
impossible to use the Morrissey algorithm, at least in the near future,
but people may well think of other promising algorithms.

- 31 -^.2_.4_.

Automatic query expansion

With the current search algorithm the possibilities
rather limited but something should be done.
A*^.*^.-forthisareOther Databases on Data-Star

The main problem at the moment is that cirt expects a numericalfield in the AN paragraph.
This applies to Medline but not to someother databases (e.g. Inspec). To get round this either the document
identifier could be stored as a string or some sort of hash coding could
be used. There may also be other problems with as yet untried databases.
$Lm?L9—m Checking the X25 connection is up
The PAD program checks the state of the X25 connection before it
issues its first prompt and cirt should probably do the same. There isa routine called 12trace in the X25 library which does it.
Its sourcecode can be inspected in /x25/rel2/usr/src/netio.c. The source of thePAD program would also help.
A*A*Z.#A l°6 out: command

This would send a ..o [ cont ] tostructures.
^.•A*^.*

Data-Starandreset

thedata^ Help Command

This clearly needs doing, as part of a more Nuser-friendly'end (see below).

front-6_.^.9_. A_ Limit Command
This is a command to enter a query which will be AND'd with every
query sent to the Host. This effectively restricts the data-base to
those documents which are retrieved by the limit query.
Unfortunately
it is intrinsic to our search algorithm that the limiting has to be done
before the search is started, whereas the Data-Star Limit command which
would be used by our limit command is called after the query is done.
This makes the implementation of a limit command a bit fiddly.
6_.^_. Making cirt more user-friendly
Although fairly straightforward to use and having a simple commandlanguage, cirt could certainly be made more user-friendly in a number ofways. Cirt's own messages to the searcher tend to be terse, and could
perhaps do with some expansion.
Certainly a Help command should beimplemented. The searcher should perhaps have more control over the way
the documents are displayed on the screen - e.g. an automatic title
display, with the abstract available on request.

on

The extent to which cirt is adapted in this direction must depend
the kind of user envisaged, with a considerable difference between

- 32 -

trained intermediaries and end-users. Since the immediate plan is foruse by intermediaries (see Chapter 8 ) , it is considered that the changes
required are not very extensive at this stage.
Furthermore, the best
way to determine an appropriate set of changes to cirt would be to allow
an experienced intermediary to use the system over a period of time.

A-iL#Bugs

The treatment of truncated search terms which match more than 100
actual search terms could be considered to be a bug. It is certainly
unsatisfactory.
If a query gets garbled on the way out (this should
but it seems to sometimes), then cirt doesn't notice.

neverThe BREAK key doesn't always work properly when in TALK mode.

happen