Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including lucene-filter with all npm packages installed. Try it out:

var luceneFilter = require("lucene-filter")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

lucene-filter v0.1.3

Data filter for lucene queries

lucene-filter

Data filter for lucene queries

NPM

Easily rate, order or filter objects by lucene queries.


Installation

npm install --save lucene-filter

Usage

For a better overview of what's possible, take a look at lucene-query-parser.

Node.JS


// Either of these is supported
const lucene = require('lucene-filter')(require('lucene'));
const lucene = require('lucene-filter')(require('lucene-queryparser'));
const lucene = require('lucene-filter')(require('lucene-query-parser'));

Browser

// If requirejs is detected, registers as an anonymous module
// Else, it'll attach to window.lucene
<script src="https://unpkg.com/lucene-filter/dist/lucene-filter.min.js"></script>

Example

lucene-filter transforms a lucene query into a function which returns whether an object matches the query, using the 'boost' set by the query. Returning the data when matching is also possible using .passthrough.

const lucene = require('lucene-filter')(require('lucene'));
let   result;

const data = [
  { name: 'C-3PO'           , description: 'Protocol droid.'                , species: 'Droid' },
  { name: 'R2-D2'           , description: 'Astromech droid built on Naboo.', species: 'Droid' },
  { name: 'Anakin Skywalker', description: 'Fallen Jedi, the chosen one.'   , species: 'Human' },
  { name: 'Obi-Wan Kenobi'  , description: 'Jedi Master.'                   , species: 'Human' },
  { name: 'Moon Moon'       , description: 'Mentally challenged wolf.'      , species: 'Wolf'  },
];

// Prints an array with both R2-D2 and C-3PO
console.log(data.filter(lucene('species: droid')));

// Prints an array with only R2-D2
console.log(data.filter(lucene('astromech')));

// Prints an array with both jedi
console.log(data.filter(lucene('jedi')));

// Prints an array with only the outcast
console.log(data.filter(lucene('name: "moon moon"')));

// Prints Obi-Wan
console.log(data.filter(lucene('species: human AND master')));

Why

I wanted something simple to use & not build a completely new query language without standards or documentation. This module uses either lucene or lucene-query-parser to parse the given query into something easy-to-process & turns it into a simple-to-use function.

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free