On Sat 11 Oct 2003, Ivor Williams <ivor.williams(a)tiscali.co.uk> wrote:
What I had in mind was a common search cgi script,
which could be passed a
single text string, or could be passed a form with multiple fields in it,
corresponding to the "advanced" search. Either way, it's the same cgi
script being invoked.
In fact, it's not AND or OR by default, but a
phrase search. In this case
looking for "sausages oysters", which doesn't make much sense.
I think I'm going to have to have another look at the code when I've
not just got up, because I can't see why this is. Can someone explain
it to me?
I'm wondering what level of commenting you need,
as I didn't think that
the grammar was _that_ difficult to understand - apologies.
The issue is not so much "a search is a list followed by an eostring,
a list is a set of combys separated by '|'", "a comby is a set of
terms separated by '&'" - which I agree is fairly clear once you've
read the Parse::RecDescent perldoc - but the thinking behind the way
the tree is built up. You need to say *why* you're doing what you're
Anyway, here is an alternative grammar which is a
which does a google style AND by default, and gives you AND if
you separate the words with commas. Phrase search is still available, by
passing a string bounded by "".
Thanks - can you write some tests for this? Don't worry if you can't,
it'll just mean a short delay while I find time to do it.