> Date: Thu, 13 Jun 2002 15:03:28 -0400
> From: Ray Denenberg <[log in to unmask]>
> > I've quoted this suggestion in its entirety so I have context in
> > which to ask this question: who is looking forward to explaining
> > all this to the ZIG, the W3C or anyone else?  Who's going to enjoy
> > writing tutorials for this rat's nest of logic?
> I don't see it as all that complicated: If the server supplies a
> result set name then it guarantees (a good faith effort) to maintain
> a positional result set. If it doesn't, then it doesn't.
> Is that better?

Somewhat.  (So what was all the rest of that prose about?)

> > If we want to do serious IR, then we need result sets.  So let's
> > have them in the protocol properly and have done.  If we prize
> > simplicity over power, then let's NOT have them.  But please, not
> > this wishy-washy, in-between, will-he won't-he compromise.
> Just to be clear: your suggesting we decide either (a) the server
> always returns a result set name, or (b) it never does.

Either of those choices would give us a protocol whose intent is easy
to understand.  But no, that's not what I meant.

> I don't think we want to choose one of these alternatives. We have
> implementors who want to do "serious IR" and implementors who "prize
> simplicity over power".  I think we can accomodate both.

The problem in the current spec. -- well, one of the problems -- is
that the _server_ makes the decision about whether or not a result set
is presistent: from
at the top of the "Z39.50 Concepts Retained in SRW" section --

        * Result Sets
        After a server executes a query it may include in the response
        a result set name (in contrast to classical Z39.50, the server
        names result sets, not the client). If the server does not
        intend that the result set will remain reasonably static, then
        it will not supply a result set name.

How can the server possibly make that decision?  It doesn't know what
the client's going to want to do with the results.  So the way things
are set up at the moment, the client might want a persistent set and
not be able to use it; or it might not need one, but the server wastes
resources by unilaterally deciding to maintain it anyway.

So my concrete proposal is simply that the client should send, as a
part of the search request, a bit saying whether or not it wants the
server to maintain a persistent result set.  (This approach also has
the advantage of being very easy to document :-)

(Probably doesn't need saying, but to be clear: I have no quarrel with
the server choosing what _name_ (or identifier, for Matthew) the
result set is given.  That's just an on-the-wire cookie, who care how
it's spelled?)

BTW., the SRW spec goes on to say --

        When the client subsequently wishes to retrieve records from
        the result set, it may send a Search/Retrieve request which
        includes either the same query string, or a query string that
        includes the server-supplied result set name if one was

I feel strongly that these are two different things.  I'm going to
take one brief stab at saying why, then retire gracefully -- because
I've had, and lost, this argument enough times to realise that I'm in
a minority here.

Consider a database that continually receives new records -- for
example, a news-clippings database that gets a feed from Reuters.  You
want to set up an SRW client to poll it every ten minutes and pick up
the newly-added records.  So every ten minutes you do your search,
sorted on date-of-entry, most recent first.  You say "give me the
first ten records", but if there are more than ten, you need to be
able to back and say "give me the next ten" _from the existing result
set".  This is _very_ different from re-executing the search and
fetching records 11-20 from the resulting set.

Z39.50 classic was a bit vague on that.  Maybe it's because, back in
the early 90s, you could get away more often with assusming that
databases are read-only (or at least read-mostly).  But if we mean
anything by SRW being an IR protocol for the 21st century, we surely
have to play nice with dynamic data.

 _/|_    _______________________________________________________________
/o ) \/  Mike Taylor   <[log in to unmask]>
)_v__/\  "I don't want no pretty face to tell me pretty lies, all I
         want is someone to believe" -- Billy Joel, "Honesty"