This is an implementation of the Lucene Query Parser developed using PEG.js.
Example
A quick example of how to use it:
var parser = ; // return the expression treevar results = parser; console; // titleconsole; // The Right Wayconsole; // ANDconsole; // textconsole; // go
A slightly more complicated example:
var parser = ; // return the expression treevar results = parser; console; // testconsole; // AND // the grouped expression in parentheses becomes it's own nested nodevar rightNode = results'right'; console; // fooconsole; // ORconsole; // bar
For more detailed docs, check out the wiki.
Installation
On the Command-Line
The library is available as an npm module.
To install, run:
npm install lucene-query-parser
In the Browser
In the browser, use RequireJS to load the AMD compatible module. In the example below, it assumes there's a ~/vendor
directory for third-party libraries, with RequireJS in ~/vendor/requirejs/require.js
and our library in ~/vendor/lucene-query-parser/lucene-query-parser.js
.
<!-- RequireJS --> <!-- RequireJS --> <!-- ... -->
Unit Tests
Unit tests are built with Jasmine.
On the Command-line
To run the unit tests on the command line, using node:
npm test
In the Browser
To run the unit tests, just open SpecRunner.html in any browser.
Grammar
The parser is auto-generated from a PEG implementation in JavaScript called PEG.js.
To test the grammar without using the generated parser, or if you want to modify it, try out PEG.js online. This is a handy way to test an arbitrary query and see what the results will be like or debug a problem with the parser for a given piece of data.
Community
If you'd like to help out with the project, or if you have a question, feel free to contact Troy Howard at thoward37@gmail.com.
Bug reports or feature requests should go in the GitHub issue tracker. Please include relevant sample data (the query) and a good description of the challenges you're facing.
Look to the wiki for additional documentation and other resources.