You can install Lyra using npm, yarn, pnpm:
npm i @nearform/lyrayarn add @nearform/lyrapnpm add @nearform/lyraLyra is quite simple to use. The first thing to do is to create a new database instance and set an indexing schema:
import { Lyra } from '@nearform/lyra';
const db = new Lyra({
  schema: {
    author: 'string',
    quote: 'string'
  }
});Lyra will only index string properties, but will allow you to set and store additional data if needed.
Once the db instance is created, you can start adding some documents:
await db.insert({
  quote: 'It is during our darkest moments that we must focus to see the light.',
  author: 'Aristotle'
});
await db.insert({
  quote: 'If you really look closely, most overnight successes took a long time.',
  author: 'Steve Jobs'
});
await db.insert({
  quote: 'If you are not willing to risk the usual, you will have to settle for the ordinary.',
  author: 'Jim Rohn'
});
await db.insert({
  quote: 'You miss 100% of the shots you don\'t take',
  author: 'Wayne Gretzky - Michael Scott'
});After the data has been inserted, you can finally start to query the database.
const searchResult = await db.search({
  term: 'if',
  properties: '*'
});In the case above, you will be searching for all the documents containing the word if, looking up in every schema property (AKA index):
{
  elapsed: '99μs',
  hits: [
    {
      id: 'ckAOPGTA5qLXx0MgNr1Zy',
      quote: 'If you really look closely, most overnight successes took a long time.',
      author: 'Steve Jobs'
    },
    {
      id: 'fyl-_1veP78IO-wszP86Z',
      quote: 'If you are not willing to risk the usual, you will have to settle for the ordinary.',
      author: 'Jim Rohn'
    }
  ],
  count: 2
}You can also restrict the lookup to a specific property:
const searchResult = await db.search({
  term: 'Michael',
  properties: ['author']
});Result:
{
  elapsed: '111μs',
  hits: [
    {
      id: 'L1tpqQxc0c2djrSN2a6TJ',
      quote: "You miss 100% of the shots you don't take",
      author: 'Wayne Gretzky - Michael Scott'
    }
  ],
  count: 1
}If needed, you can also delete a given document by using the delete method:
await db.delete('L1tpqQxc0c2djrSN2a6TJ');Lyra is licensed under the Apache 2.0 license.