• Skip to primary navigation
  • Skip to main content
  • Skip to footer

Codemotion Magazine

We code the future. Together

  • Discover
    • Events
    • Community
    • Partners
    • Become a partner
    • Hackathons
  • Magazine
    • Backend
    • Dev community
    • Carriere tech
    • Intelligenza artificiale
    • Interviste
    • Frontend
    • DevOps/Cloud
    • Linguaggi di programmazione
    • Soft Skill
  • Talent
    • Discover Talent
    • Jobs
    • Manifesto
  • Companies
  • For Business
    • EN
    • IT
    • ES
  • Sign in
ads

TheZalMarzo 28, 2024

OpenDev Explorer – Episodio 3 OramaSearch: Non è il trovare, ma il cercare

Backend
OramaSearch
facebooktwitterlinkedinreddit

Benvenuti a OpenDev Explorer, la mia rubrica dedicata all’esplorazione del mondo Open Source che strizza un occchio alla developer experience. Io sono Riccardo (aka TheZal) e oggi vi parlerò di OramaSearch, un motore di ricerca open source battery included con zero dipendenze.

Panoramica generale

“It’s not the finding, but the searching” è uno dei motti di OramaSearch, un motore di ricerca open source pronto out of the box e con zero dipendenze. Nato con un altro nome (Lyra) come esercizio per un talk di Michele Riva per spiegare come funziona un motore di ricerca full-text, è diventato poi un progetto vero e proprio grazie anche ai feedback della community (5800 stelle su GitHub e migliaia di download in pochi mesi) che hanno trovato in Orama Search un potente e ottimizzato motore di ricerca semplice da usare e in grado di soddifare tutte le richieste della community.

Recommended article
Giugno 3, 2025

La signature chain: garanzia di autenticità, integrità e sequenzialità nei documenti digitali

Antonio Musarra

Backend

Manuale di istruzioni

Installazione

Installare OramaSearch è semplicissimo, infatti è disponibile in tutti i maggiori package manager (npm, yarn, pnpm) e può essere installato con un semplice comando:

npm i @orama/oramaCode language: CSS (css)

Oppure è possibile importarlo direttamente in un browser module:

<html>

  <body>

    <script type="module">

      import { create, search, insert } from 'https://unpkg.com/@orama/orama@latest/dist/index.js'

      // ...

    </script>

  </body>

</html>Code language: HTML, XML (xml)

Utilizzo

Come prima cosa è necessario creare una nuova istanza (da ora in poi database) con un index schema.

Lo schema rappresenta le proprietà ricercabili del documento da inserire nel database. Risulta anche possibile avere delle proprietà in più non indicizzate, purchè queste non ci servano nella ricerca.

Un esempio di utilizzo (preso direttamente dalla documentazione ufficiale) è il seguente:

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

const db = await create({

  schema: {

    name: 'string',

    description: 'string',

    price: 'number',

    meta: {

      rating: 'number',

    },

  },

})

await insert(db, {

  name: 'Wireless Headphones',

  description: 'Experience immersive sound quality with these noise-cancelling wireless headphones.',

  price: 99.99,

  meta: {

    rating: 4.5,

  },

})

const searchResult = await search(db, {

  term: 'headphones',

})

console.log(searchResult.hits.map((hit) => hit.document))Code language: JavaScript (javascript)

Codemotion Masterclass

La developer experience

Il più grande successo di Orama Search è dato dal fatto che sia stata la community a farlo diventare un progetto (e un prodotto) vero e proprio. La community, infatti, ha acclamato Orama grazie alla sua developer experience fantastica e alla sua semplicità d’uso.

Ci sono diversi punti che vanno a migliorare la developer experience di OramaSearch:

1 – La documentazione è chiara e ben fatta

2 – La community è molto attiva e risponde in maniera molto rapida alle domande poste su GitHub o su Slack

3 – La libreria è molto ben scritta e permette di iniziare ad utilizzarla in pochi minuti

4 – Orama fornisce diversi plugin ufficiali che permettono l’utilizzo di Orama in diversi contesti (come ad esempio su Astro)

L’extra mile

OramaSearch ha in alcune sue funzionalità un extra mile che lo rendono un motore di ricerca molto potente e flessibile.

Essendo stato progettato per avere al suo interno un database vettoriale, OramaSearch implementa nativamente la ricerca vettoriale degli elementi.

Inoltre implementa anche la funzionalità di geo search, che permette di cercare elementi in base alla loro posizione geografica.

Il confronto con lo status quo

Esistono diversi motori di ricerca full text (come ad esempio ElasticSearch) ma non credo che ce ne sia uno sul mercato che abbia nel suo arsenale le stesse armi che ha OramaSearch.

Sono sicuro invece che al momento non esista un’utility potente come Orama che condivida la sua stessa semplicità d’uso, rendendo così Orama Search unico nel suo genere.

Per quanto riguarda la velocità di ricerca, Orama Search è uno dei motori di ricerca più veloci che abbia mai provato, e questo è un ennesimo punto a suo favore.



Tiriamo le somme!

OramaSearch è un motore di ricerca open source che ha tutte le carte in regola per diventare uno dei motori di ricerca più utilizzati nel mondo open source. La sua semplicità d’uso e la sua velocità di ricerca lo rendono un motore di ricerca unico nel suo genere, e credo che la community saprà apprezzare il lavoro svolto da Michele Riva e dal suo team.

Codemotion Collection Background
Dalla community
Selezionati per te

Vuoi scoprire più articoli come questo? Dai un’occhiata alla collection Dalla community dove troverai sempre nuovi contenuti selezionati dal nostro team.

Share on:facebooktwitterlinkedinreddit

Tagged as:Michele Riva OramaSearch

TheZal
Ciao! Mi chiamo Riccardo e sono un Software Engineer improntato al Backend. Sono anche colui che scrive su thezal.dev, il mio posto su internet dove fondo la mia passione per i mondi fantasy con quella per la tecnologia. Oltre a essere un tipo da tastiera meccanica sono anche un appassionato di fumetti americani, un giocatore di dungeons and dragons e un aspirante speaker. A presto!
Angular HostAttributeToken: nuova vita agli attributi
Previous Post
Due container in un singolo pod
Next Post

Footer

Discover

  • Events
  • Community
  • Partners
  • Become a partner
  • Hackathons

Magazine

  • Tech articles

Talent

  • Discover talent
  • Jobs

Companies

  • Discover companies

For Business

  • Codemotion for companies

About

  • About us
  • Become a contributor
  • Work with us
  • Contact us

Follow Us

© Copyright Codemotion srl Via Marsala, 29/H, 00185 Roma P.IVA 12392791005 | Privacy policy | Terms and conditions