{"_id":"lucene-query-generator","_rev":"49-4a9e4285d83d0e1f1e7305bf8b101a87","name":"lucene-query-generator","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"lucene-query-generator","version":"0.1.0","keywords":["lucene","query","escape"],"author":{"url":"http://medicmobile.org","name":"Gareth Bowen","email":"gareth@medicmobile.org"},"_id":"lucene-query-generator@0.1.0","maintainers":[{"name":"garethbowen","email":"gareth@bowenwebdesign.co.nz"}],"homepage":"https://github.com/medic/lucene-query-generator","bugs":{"url":"https://github.com/medic/lucene-query-generator/issues"},"dist":{"shasum":"98e98dc479687d47dc6a71ca5c6a2dbf7ae1ca54","tarball":"https://registry.npmjs.org/lucene-query-generator/-/lucene-query-generator-0.1.0.tgz","integrity":"sha512-oQ2Ir39Y9pyia4jdW0ElBzqVeCJzuxqiuUXtccGN/R5y6puvqQv3P1GrtjNOnCw2vKBsoe3Wg3erZseDrPp7Ng==","signatures":[{"sig":"MEUCIAZzPzKzUh61cIjgYtS3Gic1HTTPE59+7v6859Zvb5oHAiEAxH9FF7/wjkY9U74L5uzbx7dvh7WOdocwnH8+o+iPd1I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./generator.js","_from":"./","_shasum":"98e98dc479687d47dc6a71ca5c6a2dbf7ae1ca54","gitHead":"b5fe08a340ffd057dcbbad802106a27806e9bf4f","scripts":{"test":"nodeunit tests"},"_npmUser":{"name":"garethbowen","email":"gareth@bowenwebdesign.co.nz"},"licenses":[{"type":"MIT"}],"repository":{"url":"https://github.com/medic/lucene-query-generator.git","type":"git"},"_npmVersion":"1.4.28","description":"Generate escaped lucene query strings","directories":{},"devDependencies":{"nodeunit":"latest"}},"0.1.1":{"name":"lucene-query-generator","version":"0.1.1","keywords":["lucene","query","escape"],"author":{"url":"http://medicmobile.org","name":"Gareth Bowen","email":"gareth@medicmobile.org"},"_id":"lucene-query-generator@0.1.1","maintainers":[{"name":"garethbowen","email":"gareth@bowenwebdesign.co.nz"}],"homepage":"https://github.com/medic/lucene-query-generator","bugs":{"url":"https://github.com/medic/lucene-query-generator/issues"},"dist":{"shasum":"482fc642fce14dd8030ee8a638311fff72e47a17","tarball":"https://registry.npmjs.org/lucene-query-generator/-/lucene-query-generator-0.1.1.tgz","integrity":"sha512-uQZUzSTWekIdT+oSNcK1sP1wurzEkjgQXvoQIHakdIQvC1DTlkkLXz82gMgPWoDFFsw/cKlUIywIX/hGS2SbPg==","signatures":[{"sig":"MEQCIHWmzAU+nleXS+4fMQ+VeDItVkR1aXP6niz5IS0AQG1OAiBWhUxiHaXXoBb0JrJTTMEokrTbcsbvAXfAze/b79KI0Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./generator.js","_from":"./","_shasum":"482fc642fce14dd8030ee8a638311fff72e47a17","gitHead":"db0838b1d08dfa798eb65d3e71f7be6e714cca77","scripts":{"test":"nodeunit tests"},"_npmUser":{"name":"garethbowen","email":"gareth@bowenwebdesign.co.nz"},"licenses":[{"type":"MIT"}],"repository":{"url":"https://github.com/medic/lucene-query-generator.git","type":"git"},"_npmVersion":"1.4.28","description":"Generate escaped lucene query strings","directories":{},"devDependencies":{"nodeunit":"latest"}},"0.1.2":{"name":"lucene-query-generator","version":"0.1.2","keywords":["lucene","query","escape"],"author":{"url":"http://medicmobile.org","name":"Gareth Bowen","email":"gareth@medicmobile.org"},"_id":"lucene-query-generator@0.1.2","maintainers":[{"name":"garethbowen","email":"gareth@bowenwebdesign.co.nz"}],"homepage":"https://github.com/medic/lucene-query-generator","bugs":{"url":"https://github.com/medic/lucene-query-generator/issues"},"dist":{"shasum":"88972081078d218eb10e80fbf452d4059967c07d","tarball":"https://registry.npmjs.org/lucene-query-generator/-/lucene-query-generator-0.1.2.tgz","integrity":"sha512-fo7pV1dMlm5nPBotFCBWg2HB3jebQkzYtex+gDRgzdp/Y1FIEIhLzVVg0TxZA92S4T+DjzNfkwA9j+C4xp0aMQ==","signatures":[{"sig":"MEUCIGqT0v0/W9hyZdMmH8CnMuctiLdiKS/HGg/lKEGbpBDMAiEArU9/r1assvaEPmzm8Yn2yTFVB85cCR0TQCUaUQGGx5Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./generator.js","_from":"./","_shasum":"88972081078d218eb10e80fbf452d4059967c07d","gitHead":"6ac108496e8673a29045ca9cf42e1e01e61191aa","scripts":{"test":"nodeunit tests"},"_npmUser":{"name":"garethbowen","email":"gareth@bowenwebdesign.co.nz"},"licenses":[{"type":"MIT"}],"repository":{"url":"https://github.com/medic/lucene-query-generator.git","type":"git"},"_npmVersion":"1.4.28","description":"Generate escaped lucene query strings","directories":{},"devDependencies":{"nodeunit":"latest"}},"0.1.3":{"name":"lucene-query-generator","version":"0.1.3","keywords":["lucene","query","escape"],"author":{"url":"http://medicmobile.org","name":"Gareth Bowen","email":"gareth@medicmobile.org"},"_id":"lucene-query-generator@0.1.3","maintainers":[{"name":"garethbowen","email":"gareth@bowenwebdesign.co.nz"}],"homepage":"https://github.com/medic/lucene-query-generator","bugs":{"url":"https://github.com/medic/lucene-query-generator/issues"},"dist":{"shasum":"2012551ee239afdedf94cfc5f091c1915de23dbf","tarball":"https://registry.npmjs.org/lucene-query-generator/-/lucene-query-generator-0.1.3.tgz","integrity":"sha512-FQfelhN0w1DdK9QoAMFlDduyHinJurflyJAynssPVbKZ/QihUmvIxCYcEgNb0oiviHHBGe4hWvgrtSuZNgqroA==","signatures":[{"sig":"MEUCIG8JprTsjGkgiCJJo+yzJYsWnDrh6/h7hKVuvJdHYC1xAiEAqLrdwMyBW+IDS8dWkMjmqkbMH+LlB4JOfPJnOK2xlnQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./generator.js","_from":".","_shasum":"2012551ee239afdedf94cfc5f091c1915de23dbf","gitHead":"19ed92b273553495cac68f645610671d83851b57","scripts":{"test":"nodeunit tests"},"_npmUser":{"name":"garethbowen","email":"gareth@bowenwebdesign.co.nz"},"licenses":[{"type":"MIT"}],"repository":{"url":"https://github.com/medic/lucene-query-generator.git","type":"git"},"_npmVersion":"2.6.1","description":"Generate escaped lucene query strings","directories":{},"_nodeVersion":"0.12.0","devDependencies":{"nodeunit":"latest"}},"0.1.4":{"name":"lucene-query-generator","version":"0.1.4","keywords":["lucene","query","escape"],"author":{"url":"http://medicmobile.org","name":"Gareth Bowen","email":"gareth@medicmobile.org"},"_id":"lucene-query-generator@0.1.4","maintainers":[{"name":"garethbowen","email":"gareth@bowenwebdesign.co.nz"}],"homepage":"https://github.com/medic/lucene-query-generator","bugs":{"url":"https://github.com/medic/lucene-query-generator/issues"},"dist":{"shasum":"25b716593f5ade3ecf43f8f30857feae8602a076","tarball":"https://registry.npmjs.org/lucene-query-generator/-/lucene-query-generator-0.1.4.tgz","integrity":"sha512-N2A2IGoftZvG7qrOOtxTSsLlS96O/HLIk6tt/BBjYS56hP9+JMHI1vBItx1cl1hGX++CYgsMAHpZqU5z3F9CHQ==","signatures":[{"sig":"MEUCIQCF1QKVlnqDyVsR98enXyK7ZrR0vvylFNQKQevHaL5q1QIgfqIfrO5pNdRneg/6qjJgjsu/khNSj4qgnFDdT6QYs+g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./generator.js","_from":".","_shasum":"25b716593f5ade3ecf43f8f30857feae8602a076","gitHead":"dca8c78b2b5a3f8f7dca1cc0984cd7fa60fc5b8c","scripts":{"test":"nodeunit tests"},"_npmUser":{"name":"garethbowen","email":"gareth@bowenwebdesign.co.nz"},"licenses":[{"type":"MIT"}],"repository":{"url":"https://github.com/medic/lucene-query-generator.git","type":"git"},"_npmVersion":"2.6.1","description":"Generate escaped lucene query strings","directories":{},"_nodeVersion":"0.12.0","devDependencies":{"nodeunit":"latest"}},"0.2.0":{"name":"lucene-query-generator","version":"0.2.0","keywords":["lucene","query","escape"],"author":{"url":"http://medicmobile.org","name":"Gareth Bowen","email":"gareth@medicmobile.org"},"_id":"lucene-query-generator@0.2.0","maintainers":[{"name":"garethbowen","email":"gareth@bowenwebdesign.co.nz"}],"homepage":"https://github.com/medic/lucene-query-generator#readme","bugs":{"url":"https://github.com/medic/lucene-query-generator/issues"},"dist":{"shasum":"ac3b90498eb5b26de4354e741da255bbf6b9b32c","tarball":"https://registry.npmjs.org/lucene-query-generator/-/lucene-query-generator-0.2.0.tgz","integrity":"sha512-y/r5gYSB7NyacPXV+YEqzePoBGpoM9Etl8xT4Xz2uB1m1N0LkwbciqE/eyVvFjPSSu/wlzPtmxQ39z5qjMlrQA==","signatures":[{"sig":"MEUCIHARlUwobuyJnZz6rjj4epXceZYeddIyiEPWdUWTumc6AiEApYmaozpEG1ZMPsMLSKVszmbGnpRbfnYVXGjjAJQMuA8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2yYoCRA9TVsSAnZWagAAWnoP/3mO7Yr+5PNWW8bdmo8f\n6IGJahAf1mFe8+kTVWxnmytx8tybuqXOazu8MOWz8qdJNcd2+7oz5VQMSIym\no1hZJG38TOy804tWg5BKgqJWR/8KQcX/2PkDy9j8rCgEt6bBhu/RzPlYmrba\nvuUgNUx6NIlQoZ4fzPxwEVuTxjmy88pgZGLROPMO7D2J2O54shXH56ipzDsx\niI6KOhWf1gPT2ai1gntqh7azEGPeT1BWJrwFaOcQsV1BpCS8XszDA8w1LM67\nho6d44D9ykItgmmpYQcieZCGmgBmRZ4cNXI4DaGLMZjf3YdWuye3GfNVXD0A\nBdQfH0+Zls5AmNj1TgUwFXY6GJaIzgY9dBOVCMbdOCAZSwr1S/pCYCkBtqaP\n/EAIgqdDIMyDpNX0uF7eA8eCCKlvODU9sSCngwPUPw5/C9z/jlSTX/aNDMtp\n3MbzQQZUEov8LnSCnwvcEyiPFbpmG3PM/jfHhAF2KYrqKefRdcXmxbsB22gk\n7jdimyrBz34NfAu0TcoBfK+/YcYagn1dLGwirjRbroNw+bbS8ym10rsf6vO9\ngr9xpdDrUUW/i3nOyJIGEvmnj+g8s4mOrVBdAwzE4iuLTlNhCLXOSN0elj6j\nlcWbvjwbfsGqkZOoAGK90VPAsVfE/ju7CNKNwT7N7FtQ82czE4Oxd5JsxS+T\nzoZE\r\n=O1n7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./generator.js","_from":".","_shasum":"ac3b90498eb5b26de4354e741da255bbf6b9b32c","gitHead":"f1425da95032f9cf0754e0acfd2ffd523ce81e24","scripts":{"test":"nodeunit tests"},"_npmUser":{"name":"garethbowen","email":"gareth@bowenwebdesign.co.nz"},"licenses":[{"type":"MIT"}],"repository":{"url":"git+https://github.com/medic/lucene-query-generator.git","type":"git"},"_npmVersion":"3.6.0","description":"Generate escaped lucene query strings","directories":{},"_nodeVersion":"5.6.0","devDependencies":{"nodeunit":"latest"},"_npmOperationalInternal":{"tmp":"tmp/lucene-query-generator-0.2.0.tgz_1464559768181_0.15065342211164534","host":"packages-16-east.internal.npmjs.com"}}},"time":{"created":"2015-02-23T02:02:28.332Z","modified":"2026-09-25T12:45:13.967Z","0.1.0":"2015-02-23T02:02:28.332Z","0.1.1":"2015-02-23T02:06:57.436Z","0.1.2":"2015-02-23T02:29:09.261Z","0.1.3":"2015-03-02T01:22:03.810Z","0.1.4":"2015-03-23T23:33:22.417Z","0.2.0":"2016-05-29T22:09:31.280Z"},"bugs":{"url":"https://github.com/medic/lucene-query-generator/issues"},"author":{"url":"http://medicmobile.org","name":"Gareth Bowen","email":"gareth@medicmobile.org"},"homepage":"https://github.com/medic/lucene-query-generator#readme","keywords":["lucene","query","escape"],"repository":{"url":"git+https://github.com/medic/lucene-query-generator.git","type":"git"},"description":"Generate escaped lucene query strings","maintainers":[{"email":"kennsippell@gmail.com","name":"kennsippell"},{"email":"dev@medicmobile.org","name":"medic-ci"},{"email":"inromualdo@gmail.com","name":"inromualdo"},{"email":"derick.lungaho@gmail.com","name":"derickl"},{"email":"blajandra@gmail.com","name":"andrablaj"},{"email":"sugatbajracharya49@gmail.com","name":"sugat009"},{"email":"gareth@bowenwebdesign.co.nz","name":"garethbowen"}],"readme":"# lucene-query-generator\n\nBuilds a lucene query string from an object. Escapes the field names and values to prevent errors on user input. Can be used in the browser or node, however to avoid injection must be run server side.\n\n## Installation\n\n```\nnpm install lucene-query-generator\n```\n\n## API\n\n### convert\n\nConvert an object into a string query.\n\n#### Arguments\n\n* `terms`: Object representing the query\n* `options` (optional): Object with the following\n  * `schema` (optional): The field type mapping\n\n## Examples\n\n### Querying all fields\n\nThe simplest form of query\n\n```js\ngenerator.convert({ $operands: [ 'hello world' ] }\n// 'hello world'\n```\n\n### Querying fielded data\n\nQuery specific fields using key value pairs to represent the field name and desired value respectively.\n\nDefaults to the `AND` operator.\n\n```js\ngenerator.convert({\n  $operands: [{ name: 'gareth' }, { job: 'geek' }]\n});\n// 'name:gareth AND job:geek'\n```\n\nSpecify the `OR` operator.\n\n```js\ngenerator.convert({\n  $operator: 'OR',\n  $operands: [{ name: 'gareth' }, { job: 'geek' }]\n});\n// 'name:gareth OR job:geek'\n```\n\nCreate a disjunction on one field.\n\n```js\ngenerator.convert({\n  $operands: [{ name: ['gareth', 'milan'] }]\n});\n// 'name:(gareth OR milan)'\n```\n\n`null` values will be ignored.\n\n```js\ngenerator.convert({\n  $operands: [{ name: 'gareth' }, { job: null }]\n});\n// 'name:gareth'\n```\n\nSpecify the `NOT` operator.\n\n```js\ngenerator.convert({\n  $operands: [\n    { name: 'gareth' },\n    {\n      $operator: 'not',\n      $operands: [\n        { job: 'geek' }\n      ]\n    }\n  ]\n});\n// name:gareth AND NOT job:geek\n```\n\nUnlike searching all fields, values will be escaped automatically.\n\n```js\ngenerator.convert({\n  $operands: [\n    { name: 'gareth-bowen' }\n  ]\n});\n// name:\"gareth-bowen\"\n```\n\n### Nested queries\n\n```js\ngenerator.convert({\n  $operator: 'and',\n  $operands: [\n    { name: 'gareth' },\n    { \n      $operator: 'or',\n      $operands: [\n        { job: 'geek' },\n        { job: 'musician' }\n      ]\n    }\n  ]\n});\n// name:gareth AND (job:geek OR job:musician)\n```\n\n### Field types\n\nAll field terms default to type `string`, which can be overridden by providing a schema. Available types are: `string`, `int`, `long`, `float`, `double`, `boolean`, `date`. Dates can be either `Date` objects or ISO Strings.\n\n```js\ngenerator.convert(\n  {\n    $operands: [{\n      name: 'gareth',\n      seconds: 123456789,\n      dob: new Date(123456789),\n      dod: '2014-05-31T11:00:00.000Z'\n    }]\n  }, {\n    schema: {\n      seconds: 'long',\n      dob: 'date',\n      dod: 'date'\n    }\n  }\n);\n// name:gareth AND seconds<long>:123456789 AND dob<date>:\"1970-01-02T10:17:36.789Z\" AND dod<date>:\"2014-05-31T11:00:00.000Z\"\n```\n\nEscaping can be turned off for field values if you want to allow your users to be able to provide lucene expressions.\n\n```js\ngenerator.convert(\n  {\n    $operands: [{\n      name: 'gar?th'\n    }]\n  }, {\n    schema: {\n      name: {\n        type: 'string',\n        allowSpecialCharacters: true\n      }\n    }\n  }\n);\n// name:gar?th\n```\n\n### Range queries\n\nQuery for values matching a range with the `$from` and `$to` keys.\n\n```js\ngenerator.convert(\n  {\n    $operands: [{\n      name: { $from: 'gareth', $to: 'milan' },\n      age: { $from: 55, $to: 63 }\n    }]\n  }, {\n    schema: {\n      age: 'int'\n    }\n  }\n);\n// name:[gareth TO milan] AND age<int>:[55 TO 63]\n```\n\n## Development\n\n```\nnpm install\nnpm test\n```\n\n## Build Status\n\nBuilds brought to you courtesy of [Travis CI](https://travis-ci.org/medic/lucene-query-generator).\n\n[![Build Status](https://travis-ci.org/medic/lucene-query-generator.svg)](https://travis-ci.org/medic/lucene-query-generator)","readmeFilename":"README.md"}