🌌 Fast, in-memory, full-text search engine written in TypeScript. Now in beta.

Overview

Lyra

Tests

Installation

You can install Lyra using npm, yarn, pnpm:

npm i @nearform/lyra
yarn add @nearform/lyra
pnpm add @nearform/lyra

Usage

Lyra 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');

License

Lyra is licensed under the Apache 2.0 license.

Comments
  • feat(lyra): Add WebAssembly support

    feat(lyra): Add WebAssembly support

    Context

    This PR introduces Rust+WebAssembly support in Lyra, as asked privately by @micheleriva. I'm currently targeting Node.js only, but you can extend this PR as needed for supporting Deno, browsers, and other JS runtimes.

    As a motivating example, we were asked to write a skeleton for the intersectTokenScores function originally defined here in favor of the intersect_token_scores defined in the new lyra-utils crate here (and exposed to TypeScript via the lyra-utils-wasm crate here).

    Tests

    It should be noted that tests are currently failing, but we believe that is only due to a different ordering strategy used by Rust for intersect_token_scores. However, we invite the Lyra authors to carefully check that's the case.

    How to build Rust → Wasm artifacts

    With Rust and Node

    • Install Rust v1.6.5
    • Install Node v16.15.1 or superior
    • cargo update -p wasm-bindgen
    • cargo install -f [email protected]
    • cd ./rust
    • (cd ./scripts && npm i)
    • Optional: export LYRA_WASM_PROFILE="release"
    • Optional: export LYRA_WASM_TARGET="nodejs"
    • node ./scripts/wasmAll.mjs

    With docker (used by the CI)

    • Install Docker
    • docker buildx build --load \
        -f Dockerfile --build-context rust=rust \
        . -t lyrasearch/lyra-wasm \
        --progress plain
      
    • docker create --name tmp lyrasearch/lyra-wasm
    • docker cp dummy:/opt/app/src/wasm ./src/wasm
    • docker rm -f tmp

    In both cases, you should observe the following artifacts in ./src/wasm/:

    • lyra_utils_wasm_bg.wasm
    • lyra_utils_wasm_bg.wasm.d.ts
    • lyra_utils_wasm.d.ts
    • lyra_utils_wasm.js

    This will need to be included in the bundler of your choice. Moreover, you likely do not wish to store these artifacts in the repo, but would rather generate them on the fly in the CI. Feel free to change this as you see fit.

    semver-major 
    opened by jkomyno 20
  • Count term occurrencies in document

    Count term occurrencies in document

    Is your feature request related to a problem? Please describe. Right now, we're not considering how many times a term appears in a document.

    For instance, given the following strings:

    • "It's alive! It's alive!"
    • "I saw them alive"

    When searching for "alive", the first string should have priority as the term "alive" appears twice.

    good first issue 
    opened by micheleriva 17
  • Create better docs

    Create better docs

    With Lyra's upcoming first stable release, I would love to have a better documentation website, maybe using Docusaurus or something similar. The current design is not very optimal, and documentation is poorly organized

    enhancement good first issue help wanted 
    opened by micheleriva 16
  • Disk persistence

    Disk persistence

    Is your feature request related to a problem? Please describe. In order to be in line with cloud environment (or instance rebooting) an API for persist/restore in memory database could be fantastic.

    Describe the solution you'd like I'd like file system usage for this kind of activities because you can resize disks size without reboot the instance and disk usage is cheaper than ram.

    question discussion 
    opened by gioboa 11
  • Allow custom id

    Allow custom id

    Is your feature request related to a problem? Please describe. To delete a document from lyra I need to save its id somewhere.

    Describe the solution you'd like Users can specify which field can be used as id during schema declaration.

    Describe alternatives you've considered Iterate over all docs to find matching data by its id and return doc's id for removal.

    enhancement 
    opened by Zombobot1 10
  • 26 seconds on a 200k rows index (just 387mb)

    26 seconds on a 200k rows index (just 387mb)

    Describe the bug Searching on a disk persisted index of just 200k rows and a filesize of just 387mb takes 26 seconds.

    To Reproduce Create an index of 200k docs and persist it to the disk.

    Expected behavior Get results in under 0.20 seconds, up to 1 second I'd consider it reliable however anything over is simply unrealistic.

    Desktop (please complete the following information):

    • OS: macOS (mbppro 15" apple cpu)
    • Browser: any
    • Version: lyra main 0.3.1 (0.0.4 for persistence)

    Is this a normal behaviour, does it have any limitation in the number of records... etc?

    triage needed 
    opened by crivion 10
  • [new language support] Apply a PR for chinese language support

    [new language support] Apply a PR for chinese language support

    Hello! Thanks for the lyra first. I'm a new chinese user and I install it to my code after I saw the lyra 5 minutes, it is easy to understand and use. But unfortunately it does not support Chinese. i find the tokenizer/index.ts is loosely coupled that i can add language support conveniently. may i have a chance to commit a PR for the "chinese language support"? Ask for your permission (the guidelines say that i need to apply first to commit pr). thx.

    Is your feature request related to a problem? Please describe. No chinese language support.

    Describe the solution you'd like add a Regular Expression in tokenizer/index.ts like

    chinese: /[^a-z0-9_\u4e00-\u9fa5-]+/gim
    

    it can easy to test in nodejs like

    "chinese support test 中文 支持 测试".match(/[a-z0-9_\u4e00-\u9fa5-]+/gim)
    >"[ 'chinese', 'support', 'test', '中文', '支持', '测试' ]"
    

    (i'll do more test for the RE.)

    opened by SoTosorrow 9
  • chore: do not publish source files to npm

    chore: do not publish source files to npm

    30.3 MB Unpacked Size 😨😅

    This change will make sure that only the dist folder and other files like LICENSE, README, and package.json get published to npm.

    opened by iShibi 9
  • feat: upgrade prefix tree to radix tree

    feat: upgrade prefix tree to radix tree

    I've created this PR to change the prefix-tree with a radix-tree which takes less memory without performance loss The goal is to have a seamless switch between the two.

    To be implemented:

    • [x] exact & tolerance check
    • [x] contains
    • [x] removeDocumentByWord
    • [x] removeWord
    • [x] test performance
    opened by marco-ippolito 8
  • fix(stemmer): fix handling of stemmer imports

    fix(stemmer): fix handling of stemmer imports

    hotfix for #126

    • enables the TS allowJS flag so that the TS compiler copies the js files from stemmer as suggested here
    • added a "smoke" test that runs a basic search after importing lyra from dist. This is an attempt to avoid errors like this in the future. I added this test to the CI also.
    • removes the cjs build of the stemmer and renames the esm build to lib. Now that the typescript compiler handles importing, it should only be esm

    Notes

    1. The npm run script ci with coverage checks isn't actually run by the CI and notably the coverage checks are failing. Probably want to fix this in the future
    opened by codyzu 8
  • Better docs

    Better docs

    Alright. ( #24 ) Here we are @micheleriva 😄👋🏽

    New docs live at /packages/lyra-docs. A simple pnpm install && pnpm start should run with no problems.

    • [x] homepage
    • [x] getting started and installation
    • [x] create lyra instance page
    • [x] search data page
    • [x] insert data page
    • [x] delete data page

    ...some extras.


    For the local search (hope I understood correctly) I used Local search plugin, as it was the most mantained one in the list.

    Waiting for when we'll implement Lyra as search engine 😉 I open a draft pr because I expect some fine tuning activities and some finessing to do.

    Fine tuning and finessing

    • [x] Removal of blog .md files
    • [x] Removal unused images
    • [x] Dead code cleaning
    • [ ] Re-checking for typos
    • [ ] Search bar fix

    Cannot wait to hear your feedback. 👊🏽

    opened by thomscoder 8
  • feat: Only export as ESM.

    feat: Only export as ESM.

    This PR changes Lyra to be a ESM only package, since most of our target runtime support ESM by default. For CJS compatibility, a separate export point is exported which can be used to require Lyra in both the following ways:

    const { create, insert } = require('@lyrasearch/lyra/cjs')
    
    create()
      .then(db => insert(db, {/* ... */})
      .catch(console.error)
    

    OR

    const { requireLyra } = require('@lyrasearch/lyra/cjs')
    
    requireLyra((err, lyra) => {
      if(err) {
        throw err
      }
    
      const { create, insert } = lyra
      create()
        .then(db => insert(db, {/* ... */})
        .catch(console.error)
    })
    

    Note that tokenize and formatNanoseconds are not export anymore in index.ts nor cjs since they are not async methods.

    semver-major 
    opened by ShogunPanda 0
  • Hit score is NaN

    Hit score is NaN

    Describe the bug

    Unexpected search results: NaNs and 0

    To Reproduce

    const db = create({
      schema: {
        id: 'string',
        text: 'string',
      },
    })
    
    // silly sentences
    const sentences = ['I love my new pets.', 'I give my love to your pets.', 'Every child loves my ice cream.']
    sentences.forEach((sentence, i) => insert(db, { id: i.toString(), text: sentence.toLowerCase() }))
    
    const r = search(db, {
      term: 'i m',
      properties: ['text'],
    })
    console.log(r) // 3 hits, all with NaN score
    

    Technically, it's correct but it has zero score

    // initialization is same as above
    
    const r = search(db, {
      term: 'i',
      properties: ['text'],
    })
    console.log(r) // 3rd match (ice cream) has 0 as score
    

    Expected behavior Scores are meaningful

    Additional context All versions are the latest, tested in chrome.

    opened by Zombobot1 4
  • Lyra not ignoring tildes in words (Expected behavior?)

    Lyra not ignoring tildes in words (Expected behavior?)

    Hi! i am implementing lyra for our customers database that features around 8k entries and it works like a charm! Except for names that contain Tildes (eg: joaquín, josé). Our database is from spanish names

    Expected behavior I was hoping letters with tilde would index the same as letters without tilde. like ignoring them

    Additional context I am aware that at bit level, letters with tildes are different to tilde-less words. It would be nice to have to have a flag that be as "ignoreLetterHats" so you can index any letter with hats as its counterpart in the latin alphabet

    triage needed 
    opened by pimepan 1
  •  Filter results based on Geo-location field

    Filter results based on Geo-location field

    Is your feature request related to a problem? Please describe. Adding support to filter based on location.

    Describe the solution you'd like As a minimum provide ability to filter results inside a rectangle - boundingBox

    Additional context I think filtering a key here. Yep, search is good, but filters, facets, geo search is highly required.

    enhancement 
    opened by nicksav 2
  • Add support for highlighting and context

    Add support for highlighting and context

    Is your feature request related to a problem? Please describe. In some context when you are showing results of a query, especially for large documents, it would be useful to have the context where the matching occurred inside the document, to help the user to choose between different results.

    Describe the solution you'd like It should be possible to specify a context length and get an array with data on where matches occurred and tokens/word around that.

    My Idea would be to add a field to results like

    {
      context: {
        match: string
        position: {
          start: number
          end: number
        }
      }
    }
    

    Describe alternatives you've considered Really any way to get similar info with different format, maybe a snippet.

    Additional context

    enhancement plugin 
    opened by Ceres6 1
Releases(0.3.1)
  • 0.3.1(Nov 15, 2022)

    What's Changed

    • fix(lyra): fixes #180 by @micheleriva in https://github.com/LyraSearch/lyra/pull/182

    Full Changelog: https://github.com/LyraSearch/lyra/compare/0.3.0...0.3.1

    Source code(tar.gz)
    Source code(zip)
  • 0.3.0(Nov 14, 2022)

    What's Changed

    • chore: refactor by @ilteoood in https://github.com/LyraSearch/lyra/pull/166
    • chore: refactor by @ilteoood in https://github.com/LyraSearch/lyra/pull/167
    • feat(internals): exposes internal methods outside Lyra by @micheleriva in https://github.com/LyraSearch/lyra/pull/173
    • feat: adds TF-IDF by @micheleriva in https://github.com/LyraSearch/lyra/pull/169
    • BREAKING feat: Change RetrievedDoc structure. by @ShogunPanda in https://github.com/LyraSearch/lyra/pull/176
    • feat(lyra): removes properties names restrictions by @micheleriva in https://github.com/LyraSearch/lyra/pull/177
    • Initial non searchable fields support on missing schema/doc key match by @LBRDan in https://github.com/LyraSearch/lyra/pull/174
    • docs: updates the readme file by @micheleriva in https://github.com/LyraSearch/lyra/pull/178

    New Contributors

    • @LBRDan made their first contribution in https://github.com/LyraSearch/lyra/pull/174

    Full Changelog: https://github.com/LyraSearch/lyra/compare/0.2.8...0.3.0

    Source code(tar.gz)
    Source code(zip)
  • 0.2.8(Oct 24, 2022)

    What's Changed

    • Fixed vue example by @giovannioggioni in https://github.com/LyraSearch/lyra/pull/161
    • Fixed intersectMany function by @matteoscaramuzza in https://github.com/LyraSearch/lyra/pull/160
    • test: improves tests by @micheleriva in https://github.com/LyraSearch/lyra/pull/163

    New Contributors

    • @giovannioggioni made their first contribution in https://github.com/LyraSearch/lyra/pull/161
    • @matteoscaramuzza made their first contribution in https://github.com/LyraSearch/lyra/pull/160

    Full Changelog: https://github.com/LyraSearch/lyra/compare/0.2.7...0.2.8

    Source code(tar.gz)
    Source code(zip)
  • 0.2.7(Oct 17, 2022)

    What's Changed

    • chore: fix vue example error by @yyl2020 in https://github.com/LyraSearch/lyra/pull/156
    • perf(lyra): support multiple nested props by @mateonunez in https://github.com/LyraSearch/lyra/pull/157

    New Contributors

    • @yyl2020 made their first contribution in https://github.com/LyraSearch/lyra/pull/156

    Full Changelog: https://github.com/LyraSearch/lyra/compare/0.2.6...0.2.7

    Source code(tar.gz)
    Source code(zip)
  • 0.2.6(Oct 13, 2022)

    What's Changed

    • [OPTIC-RELEASE-AUTOMATION] release/0.2.5 by @optic-release-automation in https://github.com/LyraSearch/lyra/pull/147
    • chore: fix benchmark comparisson workflow by @RafaelGSS in https://github.com/LyraSearch/lyra/pull/151
    • feat(lyra): adds token intersection algorithm to return more precise search results by @micheleriva in https://github.com/LyraSearch/lyra/pull/150
    • docs(readme): adds Lyra slack channel URL to README by @micheleriva in https://github.com/LyraSearch/lyra/pull/152

    Full Changelog: https://github.com/LyraSearch/lyra/compare/0.2.5...0.2.6

    Source code(tar.gz)
    Source code(zip)
  • 0.2.5(Oct 6, 2022)

    What's Changed

    • chore(benchmarks): adds basic benchmarks and fixes linting errors by @micheleriva in https://github.com/LyraSearch/lyra/pull/133
    • docs(readme): document the different builds by @codyzu in https://github.com/LyraSearch/lyra/pull/138
    • diacritics replacer proposal by @victortostes-hotmart in https://github.com/LyraSearch/lyra/pull/141
    • fixes typo on readme by @aldotele in https://github.com/LyraSearch/lyra/pull/144
    • docs(readme): fixes typo in readme by @micheleriva in https://github.com/LyraSearch/lyra/pull/145
    • fix(trie): fixes object properties access to avoid searching through inherited props by @micheleriva in https://github.com/LyraSearch/lyra/pull/146

    New Contributors

    • @victortostes-hotmart made their first contribution in https://github.com/LyraSearch/lyra/pull/141
    • @aldotele made their first contribution in https://github.com/LyraSearch/lyra/pull/144

    Acknowledgments

    Special thanks to @lucaong for helping with https://github.com/LyraSearch/lyra/issues/137

    Full Changelog: https://github.com/LyraSearch/lyra/compare/0.2.4...0.2.5

    Source code(tar.gz)
    Source code(zip)
  • 0.2.4(Sep 12, 2022)

    What's Changed

    • chore: release automation by @simoneb in https://github.com/LyraSearch/lyra/pull/130
    • feat(lyra): compute levenshtein metric within a given tolerance by @jkomyno in https://github.com/LyraSearch/lyra/pull/131

    New Contributors

    • @simoneb made their first contribution in https://github.com/LyraSearch/lyra/pull/130
    • @jkomyno made their first contribution in https://github.com/LyraSearch/lyra/pull/131

    Full Changelog: https://github.com/LyraSearch/lyra/compare/0.2.3...0.2.4

    Source code(tar.gz)
    Source code(zip)
  • 0.2.3(Sep 7, 2022)

    What's Changed

    • fix(stemmer): fix handling of stemmer imports by @codyzu in https://github.com/LyraSearch/lyra/pull/128

    Full Changelog: https://github.com/LyraSearch/lyra/compare/0.2.2...0.2.3

    Source code(tar.gz)
    Source code(zip)
  • 0.2.2(Sep 6, 2022)

    What's Changed

    • feat(package): add proper support for webpack 4 which is used by expo by @codyzu in https://github.com/LyraSearch/lyra/pull/120
    • chore(package): remove broken npm run scripts by @codyzu in https://github.com/LyraSearch/lyra/pull/122
    • build(package): builds the package on prepare, allowing for git dependencies by @codyzu in https://github.com/LyraSearch/lyra/pull/123
    • build(package): use npm for build to allow for vanilla install from git and github by @codyzu in https://github.com/LyraSearch/lyra/pull/125
    • feat(stemmer): adds snowball-generated stemmers by @micheleriva in https://github.com/LyraSearch/lyra/pull/124

    Full Changelog: https://github.com/LyraSearch/lyra/compare/0.2.1...0.2.2

    Source code(tar.gz)
    Source code(zip)
  • 0.2.1(Sep 4, 2022)

    What's Changed

    • feat(tokenizer): adds stop words by @micheleriva in https://github.com/LyraSearch/lyra/pull/111
    • fix: replace setImmediate with setTimeout by @sidwebworks in https://github.com/LyraSearch/lyra/pull/113
    • fix(insertion-checker): fix crash when warning on react-native by @codyzu in https://github.com/LyraSearch/lyra/pull/116
    • feat(tokenizer): makes it possible to override the default tokenizer with a custom one by @micheleriva in https://github.com/LyraSearch/lyra/pull/118
    • ci(ci): removes benchmark workflow by @micheleriva in https://github.com/LyraSearch/lyra/pull/119

    New Contributors

    • @sidwebworks made their first contribution in https://github.com/LyraSearch/lyra/pull/113
    • @codyzu made their first contribution in https://github.com/LyraSearch/lyra/pull/116

    Full Changelog: https://github.com/LyraSearch/lyra/compare/0.2.0...0.2.1

    Source code(tar.gz)
    Source code(zip)
  • 0.2.0(Aug 29, 2022)

    What's Changed

    • feat(stemmer): adds English stemmer by @micheleriva in https://github.com/LyraSearch/lyra/pull/109
    • feat: implement hook system by @RafaelGSS in https://github.com/LyraSearch/lyra/pull/110

    Full Changelog: https://github.com/LyraSearch/lyra/compare/0.1.4...0.2.0

    Source code(tar.gz)
    Source code(zip)
  • 0.1.4(Aug 27, 2022)

    What's Changed

    • chore(package.json): add description and correct license name by @iShibi in https://github.com/LyraSearch/lyra/pull/105
    • feat(lyra): adds batchInsert async method by @micheleriva in https://github.com/LyraSearch/lyra/pull/106
    • fix(errors): fixes error messages referring to old Lyra class-based i… by @micheleriva in https://github.com/LyraSearch/lyra/pull/107

    Full Changelog: https://github.com/LyraSearch/lyra/compare/0.1.3...0.1.4

    Source code(tar.gz)
    Source code(zip)
  • 0.1.3(Aug 26, 2022)

  • 0.1.2(Aug 26, 2022)

    What's Changed

    • fix: check for hrtime func availability by @castarco in https://github.com/LyraSearch/lyra/pull/102
    • chore(lyra): export tokenizer function by @micheleriva [3e6df9a86c56b4359c2f6424d259be3b925c91f0]

    Full Changelog: https://github.com/LyraSearch/lyra/compare/0.1.1...0.1.2

    Source code(tar.gz)
    Source code(zip)
  • 0.1.1(Aug 23, 2022)

  • 0.1.0(Aug 23, 2022)

    0.1.0

    23 August 2022

    • chore(lyra): BREAKING CHANGE changes org to lyrasearch [8003f5cbf06c8c22b960ca0b1b3e4943f9e47013]
    • fix(lyra): throws an error when trying to override the "id" schema property #100
    • docs(changelog): updates changelog 9a43b20
    Source code(tar.gz)
    Source code(zip)
  • 0.0.5(Aug 21, 2022)

    0.0.5

    21 August 2022

    • refactor: improve types in repl.ts #96
    • refactor: fix some minor linter warnings #95
    • docs: add inline documentation #91
    • docs: fix typo in example import statements #92
    • Demo page improvements and restyling #81
    • fix(lyra): removes access to process and performance global variable if not supported in the runtime #98
    • refactor(docs): removes docs from monorepo b28c6cb
    • refactor(docs): removes docs workflow c358373
    • docs: updates changelog 81a78c0
    Source code(tar.gz)
    Source code(zip)
  • 0.0.4(Aug 9, 2022)

    0.0.4

    9 August 2022

    • chore: update benchmarks to run only on main #90
    • chore: add benchmark-comparisson workflow #89
    • fix: intelliSense not working for some params of insert/search #86
    • feat(benchmarks): adds comparision with other libraries c52189f
    • feat(lyra): adds possibility to save and load Lyra schema 290c8a2
    • refactor(edge): removes edge package 50e44ad
    Source code(tar.gz)
    Source code(zip)
  • 0.0.3(Aug 5, 2022)

  • 0.0.2(Aug 4, 2022)

  • 0.0.1(Aug 2, 2022)

    0.0.1

    2 August 2022

    • Add Lyra implementation example with Vue #73
    • Improve React Example #72
    • Proof reading #68
    • Better docs #65
    • docs: delete method to remove method #67
    • Feat/remove natural #60
    • Simple structures #55
    • fix(docs): Fixes guide README #54
    • fix(benchmarks): Fixes typo into the generating of README.md file #53
    • perf: prevent potential overhead on falsy value #46
    • Remove by word should consider other doc ids #45
    • Add exact param in remove doc by word method #41
    • Prevent undefined elements #33
    • feat(lyra): adds possibility to disable stemming globally #30
    • Add Stemmer tests #25
    • perf(benchmarks): improves benchmarks #26
    • test(lyra): improves test coverage #23
    • Typed search properties to match schema #22
    • Typed hits property in search method #21
    • Typed Lyra.insert method according to the schema used #20
    • fix(benchmark start command): bennchmark start command and files import #19
    • Support for nested schema #17
    • feat(lyr): adds typo tolerance #11
    • fix(lyra): fixes case where Lyra won't remove a document from the index #52
    • fix(lyra): fixes error when deleting non-string properties #66
    • chore(lyra): fixes publication issue #27
    • test(lyra): improves tests 94797aa
    • refactor(docs): renames 'lyra-docs' package into 'docs' 744f5ca
    • refactor(docs): removes old docs 1ce9d2d
    Source code(tar.gz)
    Source code(zip)
  • 0.0.1-beta-19(Aug 2, 2022)

    Changelog

    All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

    0.0.1-beta-19 (2022-08-02)

    Fix

    • fix(lyra): fixes case where Lyra won't remove a document from the index (491b6f5b823f4a85cb8865029c9f2f5d261d5a4e) @micheleriva

    Tests

    • tests(lyra): improves document removal tests (ad17925d1bb5a614c1c8384d7ba7eb03280dc10b) @micheleriva

    Docs

    • docs: updates docs (70aa889e44ac09afcdf0b1393ddffa94c392e28a) @micheleriva
    Source code(tar.gz)
    Source code(zip)
  • 0.0.1-beta-18(Aug 1, 2022)

    Changelog

    All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

    0.0.1-beta-18 (2022-08-01)

    Fix

    • fix(lyra): fixes duplicated results when search term appears in multiple properties (f813865) @micheleriva
    • fix(development-repl): fixes search in development repl (7070e18) @micheleriva

    Chore

    • chore(development-repl): adds basic development repl (257e759) @micheleriva

    Refactor

    • refactor(docs): renames 'lyra-docs' package into 'docs' (744f5ca) @micheleriva

    Docs

    • docs: renames "delete" method to "remove" (#67) @thomscoder
    • Better docs (#65) @thomscoder
    • Proof reading (#68) @thomscoder
    Source code(tar.gz)
    Source code(zip)
  • 0.0.1-beta-17(Jul 30, 2022)

    Changelog

    All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

    0.0.1-beta-17 (2022-07-30)

    Fix

    • build(lyra): fixes the build process (c327cda) @micheleriva

    Chore

    • chore: adds CONTRIBUTING.md file (66ce5ce) @micheleriva
    Source code(tar.gz)
    Source code(zip)
  • 0.0.1-beta-16(Jul 30, 2022)

    Changelog

    All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

    0.0.1-beta-16 (2022-07-30)

    Features

    • BREAKING refactor(lyra): removes natural as dependency (d472a469e437ba280385c7092370bc24c0dd3c3f) @micheleriva
    Source code(tar.gz)
    Source code(zip)
  • 0.0.1-beta-15(Jul 29, 2022)

    Changelog

    All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

    0.0.1-beta-15 (2022-07-29)

    Features

    • feat(lyra): adds index and docs getters and setters (@ShogunPanda) (0a3609a648268db8b9e410755e064e5f4a92f55f)
    • feat(lyra): adds basic getters and setters for docs and indexes, switches from maps back to objects (@ShogunPanda) (0a3609a648268db8b9e410755e064e5f4a92f55f)
    • feat(lyra): simplify serialization (@ShogunPanda) (0a3609a648268db8b9e410755e064e5f4a92f55f)
    • feat(lyra): do not use async when not needed (@ShogunPanda) (0a3609a648268db8b9e410755e064e5f4a92f55f)
    • feat(lyra): do not use classes (@ShogunPanda) (0a3609a648268db8b9e410755e064e5f4a92f55f)
    • chore(lyra): adds license to fast-properties lib (@micheleriva) (0a3609a648268db8b9e410755e064e5f4a92f55f)
    • chore(lyra): moves error handling to standard error function (@micheleriva) (0a3609a648268db8b9e410755e064e5f4a92f55f)
    • chore(lyra): adds missing dependencies (@micheleriva) (0a3609a648268db8b9e410755e064e5f4a92f55f)

    Chore

    • chore: added prettier configuration (@ShogunPanda) (0a3609a648268db8b9e410755e064e5f4a92f55f)

    Tests

    • tests(lyra): remove async awaits from tests (@ShogunPanda) (0a3609a648268db8b9e410755e064e5f4a92f55f)

    Docs

    • fix(benchmarks): Fixes typo into the generating of README.md file (#53) (f72a6bb) @Frenzarectah
    • fix(docs): Fixes guide README (#54) (02b11c8f032bb82b297880a5c138f95bdd447611) @bozzelliandrea

    Aknowledgements

    A massive thank you to @ShogunPanda for the incredible work on this release!

    Source code(tar.gz)
    Source code(zip)
  • 0.0.1-beta-14(Jul 25, 2022)

    Changelog

    All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

    0.0.1-beta-14 (2022-07-25)

    Fix

    • fix(lyra): prevents undefined elements (#33) (4f8b24b) @mateonunez
    • fix(lyra): adds exact param in remove doc by word method (#41) (6f665d3) @mateonunez
    • fix(lyra): fixes remove by word should consider other doc ids (#45) (1cb8f3f) @mateonunez

    Performance

    • perf(lyra): prevent potential overhead on falsy value (#46) (5b05371) @mateonunez

    CI

    • ci(benchmarks): fixes gh workflow (c930e4e) @micheleriva
    • ci(benchmarks): deletes benchmark table before adding new result (11d4323) @micheleriva

    Benchmarks

    • chore(benchmarks): refactors imdb dataset script to bash (0e368ab) @micheleriva
    • chore(benchmarks): update benchmark table (a0e6885) @micheleriva

    Tests

    • test(lyra): removes skips to stemming tests (41069fa) @micheleriva

    Aknownledgements

    A special thank you to @lucaong who spotted a bug in a merged PR and helped fix it 🙏

    Source code(tar.gz)
    Source code(zip)
  • 0.0.1-beta-13(Jul 19, 2022)

    Changelog

    All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

    0.0.1-beta-13 (2022-07-19)

    Features

    • feat(lyra): adds possibility to disable stemming globally (ac13fb7) @micheleriva
    Source code(tar.gz)
    Source code(zip)
  • 0.0.1-beta-12(Jul 18, 2022)

    Changelog

    All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

    0.0.1-beta-12 (2022-07-18)

    Features

    • perf(benchmarks): improves benchmarks (#26) (ac13fb7) @micheleriva

    Tests

    • tests(lyra): adds stemmer tests (5c60972) @mateonunez
    • test(lyra): improves test coverage (#23) (7a82bcb) @micheleriva
    Source code(tar.gz)
    Source code(zip)
  • 0.0.1-beta-11(Jul 18, 2022)

    Changelog

    All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

    0.0.1-beta-11 (2022-07-18)

    Features

    • feat(lyra) : Adds typed search properties to match schema (1626a92) @DanieleFedeli
    • feat(lyra): Adds typed hits property in search method (971d773) @DanieleFedeli
    • feat(lyra): Adds typed Lyra.insert method according to the schema used (78f97db) @DanieleFedeli
    • feat(lyra): Adds support to nested schema (d1d90e5) @DanieleFedeli

    Bug Fixes

    • style(types): fixes ts linting errors (dd65b9e) @micheleriva
    • fix(benchmark start command): fixes bennchmark start command and files import (441d014) @ilteoood
    • docs(docs): fixes typos in schema creation examples (6a68d5d) @micheleriva
    Source code(tar.gz)
    Source code(zip)
Fast, Bun-powered, and Bun-only(for now) Web API framework with full Typescript support.

Zarf Fast, Bun-powered, and Bun-only(for now) Web API framework with full Typescript support. Quickstart Starting with Zarf is as simple as instantiat

Zarf Framework 65 Dec 28, 2022
"Jira Search Helper" is a project to search more detail view and support highlight than original jira search

Jira Search Helper What is Jira Search Helper? "Jira Search Helper" is a project to search more detail view and support highlight than original jira s

null 41 Dec 23, 2022
A personal semantic search engine capable of surfacing relevant bookmarks, journal entries, notes, blogs, contacts, and more, built on an efficient document embedding algorithm and Monocle's personal search index.

Revery ?? Revery is a semantic search engine that operates on my Monocle search index. While Revery lets me search through the same database of tens o

Linus Lee 215 Dec 30, 2022
An efficient (and the fastest!) way to search the web privately using Brave Search Engine

Brave Search An efficient (and the fastest) way to search the web privately using Brave Search Engine. Not affiliated with Brave Search. Tested on Chr

Jishan Shaikh 7 Jun 2, 2022
Full text search based on InvertedIndex and ordinary approach

The Node js project that has CRUD operation and has a FullTextSearch.

Ali Nowrouzi 5 Jul 15, 2022
Adds full-text search to Community Solid Server. Powered by atomic-server

Solid Search for Community Solid Server This is an extension / plugin for the Community Solid Server. It adds full-text search to the Community Solid

Ontola 4 Jun 6, 2022
Full-stack-todo-rust-course - we are building this out now in prep for the real course

full-stack-todo-rust-course wip - we are building this out now in prep for the real course Plan Come up with the requirements Create user stories Desi

Brooks Builds 89 Jan 2, 2023
@TGMusicfy - Minimalistic Telegram music search bot written in TypeScript and based on Telegraf and Express JS.

@TGMusicfy Go to bot Deployed thanks to Heroku and New-Relic Bots are special Telegram accounts designed to handle messages automatically. Users can i

Saveliy Andronov 5 Sep 13, 2022
A flexible, memory compact, fast and dynamic CSG implementation on top of three-mesh-bvh

three-bvh-csg An experimental, in progress, flexible, memory compact, fast and dynamic CSG implementation on top of three-mesh-bvh. More than 100 time

Garrett Johnson 208 Jan 5, 2023
🌸 A fast and fun way to learn Japanese alphabets: hiragana & katakana. Don't wait - learn now!

Sakurator | Start learning 日本語 here Sakurator (Website publish date: ~4-6 April '22) - a personal trainer for learning Japanese alphabets (hiragana &

Anatoly Frolov 3 Jun 22, 2022
Tesodev-search-app - Personal Search App with React-Hooks

Tesodev-search-app Personal Search App with React-Hooks View on Heroku : [https://tesodev-staff-search-app.herokuapp.com/] Instructions Clone this rep

Rahmi Köse 1 Nov 10, 2022
Instant spotlight like search and actions in your browser with Sugu Search.

Sugu Search Instant spotlight like search and actions in your browser with Sugu Search. Developed by Drew Hutton Grab it today for Firefox and Chrome

Drew Hutton (Yoroshi) 9 Oct 12, 2022
🍭 search-buddy ultra lightweight javascript plugin that can help you create instant search and/or facilitate navigation between pages.

?? search-buddy search-buddy is an open‑source ultra lightweight javascript plugin (* <1kb). It can help you create instant search and/or facilitate n

Michael 4 Jun 16, 2022
Node starter kit for semantic-search. Uses Mighty Inference Server with Qdrant vector search.

Mighty Starter This project provides a complete and working semantic search application, using Mighty Inference Server, Qdrant Vector Search, and an e

MAX.IO LLC 8 Oct 18, 2022
Allows users to quickly search highlighted items on Wikipedia. Inspired by the "search Wikipedia" function on the kindle mobile app.

wikipedia-search Allows users to quickly search highlighted items on Wikipedia. Inspired by the "search Wikipedia" function on the kindle mobile app.

Laith Alayassa 18 Aug 15, 2022
A plugin for Obsidian (https://obsidian.md) that adds a button to its search view for copying the Obsidian search URL.

Copy Search URL This plugin adds a button to Obsidian's search view. Clicking it will copy the Obsidian URL for the current search to the clipboard. T

Carlo Zottmann 6 Dec 26, 2022
🟢 Music player app with a modern homepage, fully-fledged music player, search, lyrics, song exploration features, search, popular music around you, worldwide top charts, and much more.

Music-player-app see the project here. 1. Key Features 2. Technologies I've used Key Features: ?? Fully responsive clean UI. ?? Entirely mobile respo

suraj ✨ 3 Nov 16, 2022
ScraperTools BETA Version 1.0.1

ScraperTools Official ScraperTools NPM Package Get Started Via NPM: $ npm install scraper-tools Cara Menggunakan const scrapertools = require('scraper

Zahir Hadi Athallah 21 Sep 28, 2022
Add issues to projects (beta)

Add Issue/PR to Project (BETA) ➕ This GitHub action adds issues or pull requests to a Project (beta). Usage Create a workflow (eg: .github/workflows/o

Austen Stone 5 Aug 12, 2022