{"id":26710,"date":"2024-03-28T09:30:00","date_gmt":"2024-03-28T08:30:00","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/?p=26710"},"modified":"2024-04-04T15:29:21","modified_gmt":"2024-04-04T13:29:21","slug":"opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/","title":{"rendered":"OpenDev Explorer &#8211; Episodio 3 OramaSearch: Non \u00e8 il trovare, ma il cercare"},"content":{"rendered":"\n<p>Benvenuti a OpenDev Explorer, la mia <a href=\"https:\/\/www.codemotion.com\/magazine\/it\/author\/thezal\/\" target=\"_blank\" aria-label=\"rubrica dedicata all'esplorazione del mondo Open Source (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">rubrica dedicata all&#8217;esplorazione del mondo Open Source<\/a> che strizza un occchio alla developer experience. Io sono Riccardo (aka TheZal) e oggi vi parler\u00f2 di OramaSearch, un motore di ricerca open source battery included con zero dipendenze.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-panoramica-generale\"><strong>Panoramica generale<\/strong><\/h2>\n\n\n\n<p>&#8220;It&#8217;s not the finding, but the searching&#8221; \u00e8 uno dei motti di OramaSearch, <strong>un motore di ricerca open source pronto out of the box e con zero dipendenze<\/strong>. Nato con un altro nome (Lyra) come esercizio per un <a href=\"https:\/\/www.youtube.com\/watch?v=QKstvBilPWo&amp;ab_channel=BeJS\" target=\"_blank\" aria-label=\"talk di Michele Riva (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">talk di Michele Riva<\/a> per spiegare come funziona un motore di ricerca full-text, \u00e8 diventato poi un progetto vero e proprio grazie anche ai feedback della community (<a aria-label=\"5800 stelle su GitHub e migliaia di download in pochi mesi (opens in a new tab)\" href=\"https:\/\/github.com\/askorama\/orama\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\">5800 stelle su GitHub e migliaia di download in pochi mesi<\/a>) 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.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-manuale-di-istruzioni\"><strong>Manuale di istruzioni<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-installazione\"><strong>Installazione<\/strong><\/h3>\n\n\n\n<p>Installare OramaSearch \u00e8 semplicissimo, infatti \u00e8 disponibile in tutti i maggiori package manager (npm, yarn, pnpm) e pu\u00f2 essere installato con un semplice comando:<\/p>\n\n\n\n<p><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">npm<\/span> <span class=\"hljs-selector-tag\">i<\/span> <span class=\"hljs-keyword\">@orama<\/span>\/orama<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><\/p>\n\n\n\n<p>Oppure \u00e8 possibile importarlo direttamente in un browser module:<\/p>\n\n\n\n<p><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">html<\/span>&gt;<\/span>\n\n\u00a0 <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">body<\/span>&gt;<\/span>\n\n\u00a0 \u00a0 <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">script<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"module\"<\/span>&gt;<\/span><span class=\"javascript\">\n\n\u00a0 \u00a0 \u00a0 <span class=\"hljs-keyword\">import<\/span> { create, search, insert } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'https:\/\/unpkg.com\/@orama\/orama@latest\/dist\/index.js'<\/span>\n\n\u00a0 \u00a0 \u00a0 <span class=\"hljs-comment\">\/\/ ...<\/span>\n\n\u00a0 \u00a0 <\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">script<\/span>&gt;<\/span>\n\n\u00a0 <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">body<\/span>&gt;<\/span>\n\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">html<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-utilizzo\"><strong>Utilizzo<\/strong><\/h3>\n\n\n\n<p>Come prima cosa \u00e8 necessario creare una nuova istanza (da ora in poi database) con un index schema.<\/p>\n\n\n\n<p>Lo schema rappresenta le propriet\u00e0 ricercabili del documento da inserire nel database. Risulta anche possibile avere delle propriet\u00e0 in pi\u00f9 non indicizzate, purch\u00e8 queste non ci servano nella ricerca.<\/p>\n\n\n\n<p>Un esempio di utilizzo (preso direttamente dalla documentazione ufficiale) \u00e8 il seguente:<\/p>\n\n\n\n<p><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> { create, search, insert } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'@orama\/orama'<\/span>\n\n<span class=\"hljs-keyword\">const<\/span> db = <span class=\"hljs-keyword\">await<\/span> create({\n\n\u00a0 <span class=\"hljs-attr\">schema<\/span>: {\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">name<\/span>: <span class=\"hljs-string\">'string'<\/span>,\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">description<\/span>: <span class=\"hljs-string\">'string'<\/span>,\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">price<\/span>: <span class=\"hljs-string\">'number'<\/span>,\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">meta<\/span>: {\n\n\u00a0 \u00a0 \u00a0 <span class=\"hljs-attr\">rating<\/span>: <span class=\"hljs-string\">'number'<\/span>,\n\n\u00a0 \u00a0 },\n\n\u00a0 },\n\n})\n\n<span class=\"hljs-keyword\">await<\/span> insert(db, {\n\n\u00a0 <span class=\"hljs-attr\">name<\/span>: <span class=\"hljs-string\">'Wireless Headphones'<\/span>,\n\n\u00a0 <span class=\"hljs-attr\">description<\/span>: <span class=\"hljs-string\">'Experience immersive sound quality with these noise-cancelling wireless headphones.'<\/span>,\n\n\u00a0 <span class=\"hljs-attr\">price<\/span>: <span class=\"hljs-number\">99.99<\/span>,\n\n\u00a0 <span class=\"hljs-attr\">meta<\/span>: {\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">rating<\/span>: <span class=\"hljs-number\">4.5<\/span>,\n\n\u00a0 },\n\n})\n\n<span class=\"hljs-keyword\">const<\/span> searchResult = <span class=\"hljs-keyword\">await<\/span> search(db, {\n\n\u00a0 <span class=\"hljs-attr\">term<\/span>: <span class=\"hljs-string\">'headphones'<\/span>,\n\n})\n\n<span class=\"hljs-built_in\">console<\/span>.log(searchResult.hits.map(<span class=\"hljs-function\">(<span class=\"hljs-params\">hit<\/span>) =&gt;<\/span> hit.document))<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/masterclass.codemotion.com\/\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/BANNER-MAGAZINE-1-1024x576.png\" alt=\"Codemotion Masterclass\" class=\"wp-image-26613\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/BANNER-MAGAZINE-1-1024x576.png 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/BANNER-MAGAZINE-1-300x169.png 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/BANNER-MAGAZINE-1-768x432.png 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/BANNER-MAGAZINE-1-1536x864.png 1536w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/BANNER-MAGAZINE-1-896x504.png 896w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/BANNER-MAGAZINE-1-400x225.png 400w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/BANNER-MAGAZINE-1.png 1921w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-la-developer-experience\"><strong>La developer experience<\/strong><\/h2>\n\n\n\n<p>Il pi\u00f9 grande successo di Orama Search \u00e8 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\u00e0 d&#8217;uso.<\/p>\n\n\n\n<p>Ci sono diversi punti che vanno a migliorare la developer experience di OramaSearch:<\/p>\n\n\n\n<p>1 &#8211; La documentazione \u00e8 chiara e ben fatta<\/p>\n\n\n\n<p>2 &#8211; La community \u00e8 molto attiva e risponde in maniera molto rapida alle domande poste su GitHub o su Slack<\/p>\n\n\n\n<p>3 &#8211; La libreria \u00e8 molto ben scritta e permette di iniziare ad utilizzarla in pochi minuti<\/p>\n\n\n\n<p>4 &#8211; Orama fornisce diversi plugin ufficiali che permettono l&#8217;utilizzo di Orama in diversi contesti (come ad esempio su Astro)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-l-extra-mile\"><strong>L&#8217;extra mile<\/strong><\/h2>\n\n\n\n<p>OramaSearch ha in alcune sue funzionalit\u00e0 un extra mile che lo rendono un motore di ricerca molto potente e flessibile.<\/p>\n\n\n\n<p>Essendo stato progettato per avere al suo interno un database vettoriale, OramaSearch implementa nativamente la ricerca vettoriale degli elementi.<\/p>\n\n\n\n<p>Inoltre implementa anche la funzionalit\u00e0 di geo search, che permette di cercare elementi in base alla loro posizione geografica.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-il-confronto-con-lo-status-quo\"><strong>Il confronto con lo status quo<\/strong><\/h2>\n\n\n\n<p>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.<\/p>\n\n\n\n<p>Sono sicuro invece che al momento non esista un&#8217;utility potente come Orama che condivida la sua stessa semplicit\u00e0 d&#8217;uso, rendendo cos\u00ec Orama Search unico nel suo genere.<\/p>\n\n\n\n<p>Per quanto riguarda la velocit\u00e0 di ricerca, Orama Search \u00e8 uno dei motori di ricerca pi\u00f9 veloci che abbia mai provato, e questo \u00e8 un ennesimo punto a suo favore.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Exploring OramaSearch with Michele Riva - Indexing and searching blog posts\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube-nocookie.com\/embed\/WO1KqYD2akQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-tiriamo-le-somme\"><strong>Tiriamo le somme!<\/strong><\/h2>\n\n\n\n<p>OramaSearch \u00e8 un motore di ricerca open source che ha tutte le carte in regola per diventare uno dei motori di ricerca pi\u00f9 utilizzati nel mondo open source. La sua semplicit\u00e0 d&#8217;uso e la sua velocit\u00e0 di ricerca lo rendono un motore di ricerca unico nel suo genere, e credo che la community sapr\u00e0 apprezzare il lavoro svolto da Michele Riva e dal suo team.<\/p>\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-4fc4d6d5 alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\"><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Benvenuti a OpenDev Explorer, la mia rubrica dedicata all&#8217;esplorazione del mondo Open Source che strizza un occchio alla developer experience. Io sono Riccardo (aka TheZal) e oggi vi parler\u00f2 di OramaSearch, un motore di ricerca open source battery included con zero dipendenze. Panoramica generale &#8220;It&#8217;s not the finding, but the searching&#8221; \u00e8 uno dei motti&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/\">Read more<\/a><\/p>\n","protected":false},"author":193,"featured_media":26790,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[10263],"tags":[11965,11968],"collections":[11708],"class_list":{"0":"post-26710","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-backend-it","8":"tag-michele-riva","9":"tag-oramasearch-it","10":"collections-dalla-community","11":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>OramaSearch: il tuo nuovo motore di ricerca preferito<\/title>\n<meta name=\"description\" content=\"OramaSearch \u00e8 un motore di ricerca full text con una marcia in pi\u00f9. Leggi l&#039;articolo per scoprire tutti i dettagli.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OpenDev Explorer - Episodio 3 OramaSearch: Non \u00e8 il trovare, ma il cercare\" \/>\n<meta property=\"og:description\" content=\"OramaSearch \u00e8 un motore di ricerca full text con una marcia in pi\u00f9. Leggi l&#039;articolo per scoprire tutti i dettagli.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-28T08:30:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-04T13:29:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"405\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"TheZal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"TheZal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/\"},\"author\":{\"name\":\"TheZal\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/f3f099160f0d8f2f80c5e4f3c8d53503\"},\"headline\":\"OpenDev Explorer &#8211; Episodio 3 OramaSearch: Non \u00e8 il trovare, ma il cercare\",\"datePublished\":\"2024-03-28T08:30:00+00:00\",\"dateModified\":\"2024-04-04T13:29:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/\"},\"wordCount\":599,\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch.webp\",\"keywords\":[\"Michele Riva\",\"OramaSearch\"],\"articleSection\":[\"Backend\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/\",\"name\":\"OramaSearch: il tuo nuovo motore di ricerca preferito\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch.webp\",\"datePublished\":\"2024-03-28T08:30:00+00:00\",\"dateModified\":\"2024-04-04T13:29:21+00:00\",\"description\":\"OramaSearch \u00e8 un motore di ricerca full text con una marcia in pi\u00f9. Leggi l'articolo per scoprire tutti i dettagli.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/#primaryimage\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch.webp\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch.webp\",\"width\":720,\"height\":405,\"caption\":\"OramaSearch\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Backend\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"OpenDev Explorer &#8211; Episodio 3 OramaSearch: Non \u00e8 il trovare, ma il cercare\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Codemotion.Italy\/\",\"https:\/\/x.com\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/f3f099160f0d8f2f80c5e4f3c8d53503\",\"name\":\"TheZal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/01\/avatar-100x100.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/01\/avatar-100x100.png\",\"caption\":\"TheZal\"},\"description\":\"Hello there! My name is Riccardo (aka TheZal), a passionate software engineer who loves to combine his passion for code with his love for fantasy realms like Dungeons and Dragons, Harry Potter, Star Wars, LOTR, etc., etc. I'm really into studying and exploring new technologies (with a lot of love for Open Source). I'm also a co-owner of a 12-year-old dachshund called Poldo, who is the mascot of my blog!\",\"sameAs\":[\"http:\/\/www.thezal.dev\"],\"url\":\"https:\/\/www.codemotion.com\/magazine\/author\/thezal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"OramaSearch: il tuo nuovo motore di ricerca preferito","description":"OramaSearch \u00e8 un motore di ricerca full text con una marcia in pi\u00f9. Leggi l'articolo per scoprire tutti i dettagli.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/","og_locale":"en_US","og_type":"article","og_title":"OpenDev Explorer - Episodio 3 OramaSearch: Non \u00e8 il trovare, ma il cercare","og_description":"OramaSearch \u00e8 un motore di ricerca full text con una marcia in pi\u00f9. Leggi l'articolo per scoprire tutti i dettagli.","og_url":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2024-03-28T08:30:00+00:00","article_modified_time":"2024-04-04T13:29:21+00:00","og_image":[{"width":720,"height":405,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch.webp","type":"image\/webp"}],"author":"TheZal","twitter_card":"summary_large_image","twitter_creator":"@CodemotionIT","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"TheZal","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/"},"author":{"name":"TheZal","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/f3f099160f0d8f2f80c5e4f3c8d53503"},"headline":"OpenDev Explorer &#8211; Episodio 3 OramaSearch: Non \u00e8 il trovare, ma il cercare","datePublished":"2024-03-28T08:30:00+00:00","dateModified":"2024-04-04T13:29:21+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/"},"wordCount":599,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch.webp","keywords":["Michele Riva","OramaSearch"],"articleSection":["Backend"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/","url":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/","name":"OramaSearch: il tuo nuovo motore di ricerca preferito","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch.webp","datePublished":"2024-03-28T08:30:00+00:00","dateModified":"2024-04-04T13:29:21+00:00","description":"OramaSearch \u00e8 un motore di ricerca full text con una marcia in pi\u00f9. Leggi l'articolo per scoprire tutti i dettagli.","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch.webp","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch.webp","width":720,"height":405,"caption":"OramaSearch"},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/opendev-explorer-episodio-3-oramasearch-non-e-il-trovare-ma-il-cercare\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Backend","item":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/"},{"@type":"ListItem","position":3,"name":"OpenDev Explorer &#8211; Episodio 3 OramaSearch: Non \u00e8 il trovare, ma il cercare"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/f3f099160f0d8f2f80c5e4f3c8d53503","name":"TheZal","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/01\/avatar-100x100.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/01\/avatar-100x100.png","caption":"TheZal"},"description":"Hello there! My name is Riccardo (aka TheZal), a passionate software engineer who loves to combine his passion for code with his love for fantasy realms like Dungeons and Dragons, Harry Potter, Star Wars, LOTR, etc., etc. I'm really into studying and exploring new technologies (with a lot of love for Open Source). I'm also a co-owner of a 12-year-old dachshund called Poldo, who is the mascot of my blog!","sameAs":["http:\/\/www.thezal.dev"],"url":"https:\/\/www.codemotion.com\/magazine\/author\/thezal\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch-600x400.webp","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch-600x405.webp","author_info":{"display_name":"TheZal","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/thezal\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch.webp",720,405,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch-150x150.webp",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch-300x169.webp",300,169,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch.webp",720,405,false],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch.webp",720,405,false],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch.webp",720,405,false],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch.webp",720,405,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch-100x100.webp",100,100,true],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch-180x128.webp",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch.webp",720,405,false],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch-400x225.webp",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch-600x400.webp",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/oramasearch-600x405.webp",600,405,true]},"uagb_author_info":{"display_name":"TheZal","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/thezal\/"},"uagb_comment_info":0,"uagb_excerpt":"Benvenuti a OpenDev Explorer, la mia rubrica dedicata all&#8217;esplorazione del mondo Open Source che strizza un occchio alla developer experience. Io sono Riccardo (aka TheZal) e oggi vi parler\u00f2 di OramaSearch, un motore di ricerca open source battery included con zero dipendenze. Panoramica generale &#8220;It&#8217;s not the finding, but the searching&#8221; \u00e8 uno dei motti&#8230;&hellip;","lang":"it","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/26710","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/193"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=26710"}],"version-history":[{"count":3,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/26710\/revisions"}],"predecessor-version":[{"id":26914,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/26710\/revisions\/26914"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/26790"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=26710"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=26710"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=26710"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=26710"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}