Skip to content

Latest commit

 

History

History
58 lines (37 loc) · 1.46 KB

README.md

File metadata and controls

58 lines (37 loc) · 1.46 KB

Pure Full Text Search

Fast, compact full text search in pure javascript to support npm-kludge-search.

Usage

Building an Index

var Purefts = require('pure-fts');
var p = new Purefts();

p.add({ name: 'foo', description: 'a foo thing' });
p.add({ name: 'bar', description: 'a bar thing' });

p.freeze('index');

Searching an Index

var Purefts = require('pure-fts');

Purefts.thaw('index', function (err, p) {

  p.get('foo', cb);      # cb(err, data) 

  p.find({ name: 'foo'}, cb, done)
                       # returns { name: 'foo', description: 'a foo thing' }

  p.search('thing', cb, done);
                       # returns [ 'foo', 'bar' ]
})

When there are two callbacks cb and done, cb is called once with each matching record, and done is called after the search is complete. When there is only one callback (for get) it is called with the matching record or NULL if missing.

To support the needs of npm-kludge-search, this module assumes that name is the unique object key. The contents of the fields url, keywords, name and description will be added to the full text search index, in addition to the name field of the objects in the maintainers array.

Any of these fields are allowed to be missing.

It would make sense to abstract this into a set of paths, if this module were going to be useful for general purpose fts indexing.

TODO

fts doesn't work right yet

index on keyword or author does not work