iidx
TypeScript icon, indicating that this package has built-in type declarations

0.3.0 • Public • Published

Incremental search index

I will most certainly write some docs for this when time comes. Go see the example for now.

var cars = [
	{ make: 'Audi', model: 'A4' },
	{ make: 'Audi', model: 'Q7' },
	{ make: 'Audi', model: 'Quattro' },
	{ make: 'BMW', model: 'M5' },
	{ make: 'BMW', model: 'X5' },
	{ make: 'Ferrari', model: 'Testarossa' },
	{ make: 'Ferrari', model: 'Enzo Ferrari' },
	{ make: 'Toyota', model: 'Avensis' },
	{ make: 'Toyota', model: 'Prius' }
];

var idx = iidx({
	fields: { make: 10, model: 5 } 
});

_.each(cars, function (car, id) {
	car.id = id;
	idx.add(car);
});

var search = function (query) {
	console.log('======================');
	console.log('Query:', query);
	console.log('Result:');
	console.log(_.map(idx.search(query), JSON.stringify).join("\n"));
};

search('a');
search('b');
search('au');
search('a a');
search('t');
search('f');
search('f f');

idx.remove(8); // Remove Prius
search('t');
======================
Query: a
Result:
{"id":"0","object":{"id":0,"make":"Audi","model":"A4"},"weights":{"0":["audi",10]},"words":{"audi":1},"sum":10}
{"id":"1","object":{"id":1,"make":"Audi","model":"Q7"},"weights":{"0":["audi",10]},"words":{"audi":1},"sum":10}
{"id":"2","object":{"id":2,"make":"Audi","model":"Quattro"},"weights":{"0":["audi",10]},"words":{"audi":1},"sum":10}
{"id":"7","object":{"id":7,"make":"Toyota","model":"Avensis"},"weights":{"0":["avensis",5]},"words":{"avensis":1},"sum":5}
======================
Query: b
Result:
{"id":"3","object":{"id":3,"make":"BMW","model":"M5"},"weights":{"0":["bmw",10]},"words":{"bmw":1},"sum":10}
{"id":"4","object":{"id":4,"make":"BMW","model":"X5"},"weights":{"0":["bmw",10]},"words":{"bmw":1},"sum":10}
======================
Query: au
Result:
{"id":"0","object":{"id":0,"make":"Audi","model":"A4"},"weights":{"0":["audi",10]},"words":{"audi":1},"sum":10}
{"id":"1","object":{"id":1,"make":"Audi","model":"Q7"},"weights":{"0":["audi",10]},"words":{"audi":1},"sum":10}
{"id":"2","object":{"id":2,"make":"Audi","model":"Quattro"},"weights":{"0":["audi",10]},"words":{"audi":1},"sum":10}
======================
Query: a a
Result:
{"id":"0","object":{"id":0,"make":"Audi","model":"A4"},"weights":{"0":["audi",10],"1":["a4",5]},"words":{"audi":1,"a4":1},"sum":15}
======================
Query: t
Result:
{"id":"7","object":{"id":7,"make":"Toyota","model":"Avensis"},"weights":{"0":["toyota",10]},"words":{"toyota":1},"sum":10}
{"id":"8","object":{"id":8,"make":"Toyota","model":"Prius"},"weights":{"0":["toyota",10]},"words":{"toyota":1},"sum":10}
{"id":"5","object":{"id":5,"make":"Ferrari","model":"Testarossa"},"weights":{"0":["testarossa",5]},"words":{"testarossa":1},"sum":5}
======================
Query: f
Result:
{"id":"5","object":{"id":5,"make":"Ferrari","model":"Testarossa"},"weights":{"0":["ferrari",10]},"words":{"ferrari":1},"sum":10}
{"id":"6","object":{"id":6,"make":"Ferrari","model":"Enzo Ferrari"},"weights":{"0":["ferrari",10]},"words":{"ferrari":1},"sum":10}
======================
Query: f f
Result:
{"id":"6","object":{"id":6,"make":"Ferrari","model":"Enzo Ferrari"},"weights":{"0":["ferrari",10],"1":["ferrari",10]},"words":{"ferrari":2},"sum":20}
======================
Query: t
Result:
{"id":"7","object":{"id":7,"make":"Toyota","model":"Avensis"},"weights":{"0":["toyota",10]},"words":{"toyota":1},"sum":10}
{"id":"5","object":{"id":5,"make":"Ferrari","model":"Testarossa"},"weights":{"0":["testarossa",5]},"words":{"testarossa":1},"sum":5}

Package Sidebar

Install

npm i iidx

Weekly Downloads

1

Version

0.3.0

License

MIT

Unpacked Size

12.1 kB

Total Files

8

Last publish

Collaborators

  • masiama
  • virtulis