> 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 metasearcher? 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 rec.id 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 -- ,'/:. Rob Sanderson ([log in to unmask]) ,'-/::::. http://www.o-r-g.org/~azaroth/ ,'--/::(@)::. Special Collections and Archives, extension 3142 ,'---/::::::::::. Twin Cathedrals: telnet: liverpool.o-r-g.org 7777 ____/:::::::::::::. WWW: http://liverpool.o-r-g.org:8000/ I L L U M I N A T I