> My main reason for a distinction between requesting records via SRW and
> searching via CQL is that at least in our case  both are requests for
> different servers and I expect that there will be many more situations
> in which the index server that gets the CQL query is quite different
> from the database server(s) that gets the record request. In the current
> situation the CQL may have to be parsed twice.

I don't understand.

You have an architecture where one server doesn't know anything about the
records, but does have access to the indexes generated from the
record data and metadata.
Then there's another server which has access to the records, but not the
indexes.  On a search request, you parse the query, consult the indexes
and get back ... a list of matching document identifiers? ... and then
need to retrieve those records from the second database.

Why are you using SRW for the record database at all if it doesn't support
searching? If you're going to use URIs as identifiers, why have a
/database/ at all, just mirror them into a webserver and retrieve them
using the URI.  If it doesn't support CQL, then it's not SRW /anyway/
according to the minimum specifications.

Or is the search server a metasearcher, which somehow indexes the
documents but doesn't store them, and the record server is a full SRW
engine but for a limited number of the records indexed by the

Either way, the computational expense of parsing the CQL is negligable
compared to the other expenses of such a transaction (host name lookup,
socket connect, database lookup of record etc)
There's no booleans to process, and exact "foo" is just one rule to
use.  Assuming that your CQL parser is similar to mine, Adam's and
Mike's, it'd go something like:

Instantiate parser
Lookahead one token
Second token is a relation, therefore first is an index and third is a term.
Instantiate internal searchClause representation
Return representation


      ,'/:.          Rob Sanderson ([log in to unmask])
  ,'--/::(@)::.      Special Collections and Archives, extension 3142
,'---/::::::::::.    Twin Cathedrals:  telnet: 7777
____/:::::::::::::.              WWW: