Orama v1.0.0 is out!

Orama v1.0.0 is out!

Michele Riva

Product Updates

5

min read

May 24, 2023

Today we’re celebrating a great milestone for Orama: the release of the first stable version of the project, v1.0.0!

A Brief History of Orama

Orama started as an open-source project at NearForm in 2022, initially developed by me under the name of Lyra. I developed it to give a talk on how full-text search engines work at the WeAreDevelopers conference in Berlin, the biggest developers conference in the world with more than 8,000 attendees!

Since its first release, Orama got a lot of traction thanks to its simple APIs and incredible performances, gaining more than 5,800 stars on GitHub in just a few months and thousands of downloads on NPM every day.

In early 2023, in agreement with NearForm, we decided to create OramaSearch, a company that will be dedicated to the development of Orama and its ecosystem.

What’s new in v1.0.0

With Orama v1.0.0, we’re introducing some new, highly requested features, but before digging into them, let’s make this official: Orama is out of beta and its APIs are now stable!

But that’s not all. New features and fixes released in v1.0.0 include:

1. New Sorting APIs

We’ve introduced a new set of APIs to sort your results by a specific property:

import { create, insertMultiple, search } from '@orama/orama'

const db = await create({
  schema: {
    title: 'string',
    year: 'number',
    meta: {
      rating: 'number'
      favorite: 'boolean'
    }
  }
})

await insertMultiple(db, [...])

const results = await search(db, {
  term: 'matrix',
  sortBy: {
    property: 'year',
    order: 'DESC'
  }
})

You can also provide a custom sorting function to sort your results with custom logic:

const results = await search(db, {
  term: 'matrix',
  sortBy: ([,,doc1], [,,doc2]) => doc1.meta.rating - doc2.meta.rating
})

Read more about the sorting APIs in the official docs.

2. Array properties (multivalue fields)

With Orama v1.0.0, you can now index and search array properties.

import { create } from '@orama/orama'

const db = await create({
  schema: {
    title: 'string',
    tags: 'string[]',
    ratings: 'number[]'
  }
})

This will allow you to index and search multivalue fields like tags, categories, ratings, and more… imagination is your only limit here!

3. Various fixes

Fixes shipped with Orama v1.0.0 includes:

  • Fix document deletion from the storage when the remove function is invoked

  • Fix inserted document validation against the schema

  • Fix stopwords handling

  • Fix the official Astro plugin build on Windows

  • More minor fixes

What’s next?

Orama v1.0.0 is a small step towards a future where full-text search engines will be easy to use, accessible to every developer, and faster for every user.

BrainRepo summarized perfectly what we are aiming for in this fantastic article about converting his podcast into a knowledge base using Orama:

If JavaScript has democratized software development, I would say that Orama has done the same for the search experience.

We’re incredibly excited about the future of Orama and we can’t wait to share with you what we’re working on!

In the meantime, if you want to stay up to date with the latest news about Orama, you can follow us on Twitter and join our Slack channel. Here you will find a great community of developers willing to help you with your projects and share their experience with Orama.

I’d also like to opportunity to remind you about the Orama community awards:

Is your organization using Orama to solve interesting search problems? Have you contributed to Orama, written an article, made a public talk, or made a YouTube video? Share your success story at info@oramasearch.com and claim a box of community rewards as a thank you!

Run unlimited full-text, vector, and hybrid search queries at the edge, for free!