https://github.com/pisceanfoot/lucene-querystring
create a mongo query like object to lucene query string
https://github.com/pisceanfoot/lucene-querystring
lucene mongo-query nodejs querystring
Last synced: 9 days ago
JSON representation
create a mongo query like object to lucene query string
- Host: GitHub
- URL: https://github.com/pisceanfoot/lucene-querystring
- Owner: pisceanfoot
- License: apache-2.0
- Created: 2017-12-27T06:28:54.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2021-01-07T09:14:43.000Z (over 5 years ago)
- Last Synced: 2026-05-09T09:53:53.907Z (about 1 month ago)
- Topics: lucene, mongo-query, nodejs, querystring
- Language: JavaScript
- Size: 13.7 KB
- Stars: 3
- Watchers: 1
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# lucenequery [](https://travis-ci.org/pisceanfoot/lucene-querystring)
Convert a mongo query like object to lucene query string
Install
---------------
```
npm i lucene-querystring
```
Example
---------------
```
var lucene-querystring = require('lucene-querystring');
lucene-querystring.build({
name: 'leo'
});
> name:leo
```
Baisc Query
-----------------
- fiter with default `and` operator
```
var test = {
name: 'leo',
status: 'A'
};
var q = luceneQueryString.build(test);
assert.equal(q, 'name:leo AND status:A');
```
- `in` query item in a array
```
var test = {
id: [1,2,3]
};
var q = luceneQueryString.build(test);
assert.equal(q, 'id:(1 OR 2 OR 3)');
```
OR
```
var test = {
id: {
$or: [1,2,3]
}
};
var q = luceneQueryString.build(test);
assert.equal(q, 'id:(1 OR 2 OR 3)');
```
- 'range' query like from end
```
var test = {
id: {
$gt: 100,
$lt: 1000
}
};
var q = luceneQueryString.build(test);
assert.equal(q, 'id:[ 100 TO 1000 ]');
```
- `or` query
```
var test = {
$or: [{
id: 100
},{
id: 10
}]
};
var q = luceneQueryString.build(test);
assert.equal(q, 'id:100 OR id:10');
```
- `null` or `not null`
```
var test = {
name: {
"$null": false
},
};
var q = luceneQueryString.build(test);
assert.equal(q, 'name:[* TO *]');
```
Complex query
--------------------------
- complex `or` query
```
var test = {
$or: [{
$and:[{
id:1
},{
num:1
}]
},{
$and:[{
id:2
},{
num:2
}]
}]
};
var q = luceneQueryString.build(test);
assert.equal(q, '(id:1 AND num:1) OR (id:2 AND num:2)');
```
- complex `and` query
```
var test = {
$and: [{
$or: [{
id:1
},{
id:2
}]
},{
$or: [{
num:1
},{
num:2
}]
}]
};
var q = luceneQueryString.build(test);
assert.equal(q, '(id:1 OR id:2) AND (num:1 OR num:2)');
```
## Others
for other query please checkout and find in the test case.
## Test
`npm test` will run all test case in `test` folder