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.
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/orama
Code 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)
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.