UNPKG

full-text-search-light

Version:

A pure in JS written full text search with an easy to use API.

184 lines (139 loc) 4.7 kB
Full Text Search Light is a pure JS full text search engine with an **ultrafast** search and the following commands: - Add - Search - Remove - Save to file - Load from file You can add every kind of data, also complex objects. ## Install ### From NPM ```sh npm install full-text-search-light ``` ### From GitHub ```sh npm install git+https://github.com/frankred/node-full-text-search-light.git ``` ## Documentation ### Init ```js var fulltextsearchlight = require('full-text-search-light'); var search = new fulltextsearchlight(); ``` You can also change some configuration values according to the full text search. ```js var fulltextsearchlight = require('full-text-search-light'); var search = new fulltextsearchlight({ ignore_case: false, // default = true, Ignore case during all search queries index_amount: 8; // default = 12, The more indexes you have, the faster can be your search but the slower the 'add' method gets }); ``` ### Add ```js // Add values search.add('Peter'); search.add('Paul'); search.add('Maria'); ``` You can also add objects or arrays to the search. Every child value will be added to the search, no matter if it's an array or object. ```js // Add objects var obj = { name: 'Alexandra', age: 27, student: true, hobbies: ['Tennis', 'Football', 'Party']; car: { make: 'Volvo', year: 2012, topspeed: 280 } }; search.add(obj); ``` ### Add with filter If you want to ignore fields you can pass a filter function. If you want to ignore a field or value just return ```false```. If you return ```true``` or everything else the field is added to the index. ```js // Add filter, this function will be called on every single field // If you don't want to add a field to the search just return false var filter = function (key, val) { // Return false if you want to ignore field if (key == 'student' || key == 'topspeed') { return false; // Ignore field } return true; // Accept field }; search.add(obj, filter); ``` ### Search ```js var results = search.search('p'); // results = ['Peter', 'Paul'] ``` ### Remove You can remove objects or values out of the search by saving the ```id``` which is returned from the ```add``` method. ```js // Add returns an id var f = search.add("Frank"); // With that id you can remove the value from the search search.remove(f); // Returns an array with all result objects var result = search.search('pau'); // result: ['Paul'] ``` ### Save and Load ```js var fulltextsearchlight = require('full-text-search-light'); var search = new fulltextsearchlight(); // Add search.add('Hello World'); // Save current db search.save('search.json', function(error){ // Load db fulltextsearchlight.load('search.json', function(error, search_loaded){ var results = search_loaded.search('World'); }); }); ``` ### Save and Load (Sync) ```js var fulltextsearchlight = require('full-text-search-light'); var search = new fulltextsearchlight(); // Add search.add('Hello World'); // Save current db search.saveSync('search.json'); // Load db var search_loaded = fulltextsearchlight.loadSync('search.json'); var results = search_loaded.search('World'); ``` ## Functions This are all functions that can be used. ### add - ```search.add('Just a string value')``` - Add a string to the search, returns a unique id - ```search.add(obj)``` - Add a object to the search, returns a unique id If you add numbers or booleans to the search they will be converted to strings. - ```search.add(false)``` - Add booelan to the search (ok this does not really make sense, but it works.), returns a unique id - ```search.add(42)``` - Add number to the search, returns a unique id ### search - ```search.search('value')``` - Search for the string 'value'. Returns the results of the data as an array ### remove - ```search.remove(1337)``` - Remove the data with the id 1337 from the search. This id was returned by adding a value or obj. ### drop - ```search.drop()``` - Drops the search database and resets all data. The configuration is kept. ### saveSync - ```search.saveSync('path/to/file.json')``` - Save current search db to a json file. ### loadSync - ```fulltextsearchlight.loadSync('path/to/file.json')``` - Load a search from a file; ## Run tests You need mocha installed globally: ```sh npm install -g mocha ``` Now you can run tests if you navigate to project root: ```sh mocha test ``` ##License MIT **Free Software, Hell Yeah!**