![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
@orama/orama
Advanced tools
If you need more info, help, or want to provide general feedback on Orama, join the Orama Slack channel
You can install Orama using npm
, yarn
, pnpm
:
npm i @orama/orama
yarn add @orama/orama
pnpm add @orama/orama
Or import it directly in a browser module:
<html>
<body>
<script type="module">
import { create, search, insert } from 'https://unpkg.com/@orama/orama@latest/dist/index.js'
// ...
</script>
</body>
</html>
Read the complete documentation at https://docs.oramasearch.com/.
Orama is quite simple to use. The first thing to do is to create a new database instance and set an indexing schema:
import { create, insert, remove, search } from '@orama/orama'
const db = await create({
schema: {
author: 'string',
quote: 'string',
},
})
If you are using Node.js without ESM, please see build section below on how to properly require Orama.
Orama 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 insert(db, {
quote: 'It is during our darkest moments that we must focus to see the light.',
author: 'Aristotle',
})
await insert(db, {
quote: 'If you really look closely, most overnight successes took a long time.',
author: 'Steve Jobs',
})
await insert(db, {
quote: 'If you are not willing to risk the usual, you will have to settle for the ordinary.',
author: 'Jim Rohn',
})
await insert(db, {
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 search(db, {
term: 'if',
properties: '*',
boost: {
author: 1.5, // optional: boost author field by x1.5
},
})
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: {
raw: 184541,
formatted: '184μs',
},
hits: [
{
id: '41013877-56',
score: 0.025085832971998432,
document: {
quote: 'If you really look closely, most overnight successes took a long time.',
author: 'Steve Jobs'
}
},
{
id: '41013877-107',
score: 0.02315615351261394,
document: {
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 search(db, {
term: 'Michael',
properties: ['author'],
})
Result:
{
elapsed: {
raw: 172166,
formatted: '172μs',
},
hits: [
{
id: '41045799-144',
score: 0.12041199826559248,
document: {
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 remove
method:
await remove(db, '41045799-144')
Orama is packaged as ES modules, suitable for Node.js, Deno, Bun and modern browsers.
In most cases, simply import
or @orama/orama
will suffice ✨.
In Node.js, when not using ESM (with "type": "module"
in the package.json
), you have several ways to properly require Orama.
Starting with version 0.4.0 it becomes:
async function main() {
const { create, insert } = await import('@orama/orama')
const db = create(/* ... */)
insert(db, {
/* ... */
})
}
main().catch(console.error)
Orama methods can be required as CommonJS modules by requiring from @orama/orama
.
const { create, insert } = require("@orama/orama")
create(/* ... */)
.then(db => insert(db, { /* ... */ })
.catch(console.error)
Orama supports multiple languages. By default, it will use the english
language,
You can specify a different language by using the defaultLanguage
property
during Orama initialization.
By default, Orama will analyze your input using an English
Porter Stemmer function.
You can replace the default stemmer with a custom one, or a pre-built one
shipped with the default Orama installation.
Example:
import { create } from '@orama/orama'
import { stemmer } from '@orama/orama/stemmers/it'
const db = await create({
schema: {
author: 'string',
quote: 'string',
},
language: 'italian',
components: {
tokenizer: {
stemmingFn: stemmer,
},
},
})
Example using CJS (see using with commonJS above):
async function main() {
const { create } = await import('@orama/orama')
const { stemmer } = await import('@orama/orama/stemmers/it')
const db = await create({
schema: {
author: 'string',
quote: 'string',
},
language: 'italian',
components: {
tokenizer: {
stemmingFn: stemmer,
},
},
})
}
main()
Right now, Orama supports 26 languages and stemmers out of the box:
Read the complete documentation at https://docs.oramasearch.com/.
Orama is licensed under the Apache 2.0 license.
FAQs
A complete search engine and RAG pipeline in your browser, server, or edge network with support for full-text, vector, and hybrid search in less than 2kb.
The npm package @orama/orama receives a total of 19,994 weekly downloads. As such, @orama/orama popularity was classified as popular.
We found that @orama/orama demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.