solr query builder
A query builder for Solr based in it query syntax.
It has the only purpose to build the q=
part of the solr query. For the rest of the query you may want use the solr-node-client.
Available queries
where
equals
in
begin
(begins a new block (
)end
(closes the current block )
)or
any
between
betweenWithOpenIntervals
lt
gt
lte
gte
Installation
Install via npm:
$ npm install solr-query-builder
Usage
var SolrQueryBuilder = require('solr-query-builder'),
var qb = new SolrQueryBuilder();
var opt = {
city: [ 'Florianopolis', 'New York', 'Tokyo' ],
status: 'open',
age: 33,
startDate: '2014-03-22T14:04:48.691Z',
endDate: '2018-03-22T14:04:48.691Z',
offset_date: '2015-03-22T14:04:48.691Z',
offset_id: '507f1f77bcf86cd799439011',
name: 'Claus'
};
if (opt.city) qb.where('city').in(opt.city);
if (opt.status) qb.where('status', opt.status);
if (opt.age) qb.where('age').equals(opt.age);
if (opt.startDate || opt.endDate) {
qb.where('birthDate').between(opt.startDate, opt.endDate);
}
if (opt.offset_date && opt.offset_id) {
qb.begin()
.where('birthDate').lt(opt.offset_date)
.or()
.begin()
.where('birthDate').equals(opt.offset_date)
.where('_id').lt(opt.offset_id)
.end()
.end();
}
if (opt.name) {
qb.any({
firstName: opt.name,
middleName: opt.name,
lastName: opt.name
}, { contains: true });
}
var queryResult = qb.build();
console.log(queryResult);
Usage with solr-node-client
var solr = require('solr-client');
var SolrQueryBuilder = require('solr-query-builder'),
var qb = new SolrQueryBuilder();
var client = solr.createClient();
var query = client.createQuery()
.q(qb.build())
.start(0)
.rows(10);
Contributing
It is required to use editorconfig and please write and run specs before pushing any changes:
npm test
License
Copyright (c) 2014 Max Claus Nunes. This software is licensed under the MIT License.