These remarks are borrowed from the release notes in the freeWAIS suite of programs. The enhancements cited below are implemented in the WAIS server and should be available to any user of a WAIS client such as waissearch, xwais, lynx, or mosaic.
BOOLEANS == boolean 'and' and 'not' operators. This is at a simple level. There are no nesting symbols. Words are evaluated from left to right in the wais query string. When a 'not' operator is found, the following single word is moved into a buffer of not-words. This not-word buffer is evaluated after all the other words are evaluated. If a document match a not-word, that document is removed from the set of matches (given a score of zero).
When an 'and' word is found, the word following it is checked for matches to documents, and the the set of documents matching this and-word is compared to the set of documents matching any words prior to the and-word. The intersection of prior and current matching documents is retained, othe are removed (set to a zero score).
For example, this query
PARTIALWORD == The asterisk symbol '*' is parsed if it immediately follows a word, as a key to search for all partial words that match the first part of the word.
LITERAL == The quote or double-quote symbols are interpreted, if they occur in pairs around a string, as requesting a literal match of the enclosed string. Any special symbols, 'and', 'not', and '*' inside a literal strin are not interpreted. The first part of a literal string must be a word that is indexed for that data, rather than a delimiter symbol, for a match to be found.