[jsword-devel] New Search Syntax

DM Smith dmsmith555 at gmail.com
Mon Apr 11 15:53:01 MST 2005

I am thinking of the following for a new search syntax:
SearchRequest -> LuceneSearch
                        or CompoundSearch
                        or RangeRequest LuceneSearch
                        or RangeRequest CompoundSearch

LuceneSearch  -> defined by lucene, not repeated here

CompoundSearch -> LuceneSearch Blur LuceneSearch

RangeRequest     ->  [ RangeNotation ] /* all these verses are ORed with 
the rest */
                          or +[ RangeNotation ] /* the search is 
retricted to these verses */
                          or  -[ RangeNotation ] /* these verses are 
removed from the search results */

RangeNotation -> anything that JSword can handle as a range

Blur                  -> ~   /* Uses the blur size as given in options */
                        or ~N /* Finds verses within N verses of each 
other */
(Currently a ~ b finds b near a. I think this is counter intuitive. 
Should it be the other way?)

Things to note:
A search can have at most one RangeRequest. This actually will be a 
search modifier applied the results of the search.
A search can have at most one Blur.
Each part of the search request is expected to be separated by 
whitespace from the others.

While the search syntax can be defined recursively, I think such 
complexity does not add a lot of value for Blur and RangeRestrictions.

Without recursion in this syntax, a trivial parser can be written.

One further thing, Lucene uses English connectors. Should we entertain 
the internationalization of these?

More information about the jsword-devel mailing list