<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[All things #search - Medium]]></title>
        <description><![CDATA[A blog about building search UIs and apps with ReactiveSearch. For Elasticsearch, OpenSearch, Solr and MongoDB search engines - Medium]]></description>
        <link>https://medium.appbase.io?source=rss----fda0e3655d6f---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>All things #search - Medium</title>
            <link>https://medium.appbase.io?source=rss----fda0e3655d6f---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 04 Apr 2026 20:30:25 GMT</lastBuildDate>
        <atom:link href="https://medium.appbase.io/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Improving the developer experience for appbase.io docs]]></title>
            <link>https://medium.appbase.io/improving-the-developer-experience-for-appbase-io-docs-d86bb18914a7?source=rss----fda0e3655d6f---4</link>
            <guid isPermaLink="false">https://medium.com/p/d86bb18914a7</guid>
            <category><![CDATA[site-search]]></category>
            <category><![CDATA[appbase]]></category>
            <category><![CDATA[reactivesearch]]></category>
            <category><![CDATA[gatsbyjs]]></category>
            <category><![CDATA[documentation]]></category>
            <dc:creator><![CDATA[Lohita]]></dc:creator>
            <pubDate>Fri, 01 Apr 2022 12:21:19 GMT</pubDate>
            <atom:updated>2022-04-01T12:22:22.288Z</atom:updated>
            <content:encoded><![CDATA[<p>We’re excited to share a major update for <a href="https://docs.appbase.io">appbase.io’s developer docs</a> site— with enhancements such as support for a dark theme mode, improved documentation search experience, code highlighting / copying support as well as core performance improvements to SEO and page load times.</p><h3>Background and Gatsby</h3><p>Our docs are built using <a href="https://github.com/gatsbyjs/gatsby">Gatsby</a> — a popular and open-source React framework for building websites and apps. However in the last couple of years, <a href="https://docusaurus.io/">Docusaurus</a> has emerged as a popular and focused alternative for an all batteries included approach to building a documentation site.</p><p>Given that we were already using Gatsby with hundreds of routed pages and using many features such as a custom navigation layout with picker for frontend libraries, a 0ms latency search box based on an offline index, our preference was to stay with Gatsby instead of migrating to a new tool like Docusaurus.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/390/1*S9bUjYvkkYzs_fRTu2gz1A.gif" /><figcaption>Image: Our custom routing for FE library navigation</figcaption></figure><p>Besides, Gatsby being a framework and not being opionated would allow us to have more flexibility to make future enhancements, such as make use of server-side rendering.</p><p>It turns out that tuning performance as well as making several of the enhancements is indeed easy with Gatsby! The rest of the post walks through the enhancements. If you would like to incorporate any of these for your own documentation, our docs are built in the open on Github and licensed under MIT. <a href="https://github.com/appbaseio/Docs">Feel free to star or fork them</a>.</p><h3>Introducing dark mode</h3><p>The docs now fully support viewing in dark mode.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ECwpXqGPZBjojuviZd8FhA.png" /><figcaption><strong>Image:</strong> Use the theme switcher at the top right for toggling b/w light and dark modes</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*RjhWxICkY9KiK5i19oC3_A.png" /><figcaption><strong>Image:</strong> Docs in dark mode</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kDjOC29sFRZtOpZRZpgH2g.png" /><figcaption>Image: <strong>TimelineOption</strong>, a custom component from appbase.io’s designkit</figcaption></figure><p>Our docs primarily utilize the <a href="https://github.com/appbaseio/designkit">appbase.io design kit</a> for several components like the TimelineOption component above. Cards, navbar, footer are all components that come from this. We introduced a dark theme option in these components first. The docs are built using Gatsby, the next changes to support theming were done in the core repository itself.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/389/1*eVTSofXKp61sTNGOYZ0ktA.png" /></figure><p>On mobile screens, we show the theme switcher with the menu navigation’s footer.</p><p>The default theme is also auto-set based on a user’s OS display preferences.</p><h3>Searchbox enhancements</h3><p>We’ve improved the documentation search experience with a wider screen space, a first-class keyboard accessibility support, showing and a quick suggestion view of recently viewed pages.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/794/1*o6lHg51Ogo2nxEHzBaYXCg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1008/1*dAOqAjUfHfFyNsNJr3twKQ.png" /><figcaption>Image: Searchbox before and after the enhancements</figcaption></figure><h3>Code highlighting and copy snippet options</h3><p>All the code snippets in the docs now support syntax highlighting using prismjs as well as support a copy snippet button.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dqOOer_jkxAVf8vnfLT2Kg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*LxmuphP_q60M1DKEJpCDZQ.png" /><figcaption>Image: Code snippets before and after</figcaption></figure><h3>Performance enhancements</h3><p>appbase.io docs are a fully progressive web app that can be installed as an app when viewing from mobile and are also heavily SEO optimized.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/914/1*m7TNNuwCYSokQtdStMQRMg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/904/1*QS0lQOQQJ5ohcoWhhgyogw.png" /><figcaption>Image: Before and current lighthouse scores on SEO and PWA</figcaption></figure><p>We also focused on other performance enhancements such as using Loadable components, upgrading to Gatsby v4 (current major version) as well as utilizing several Gatsby plugins to reduce the Javascript needed for the docs to be interactive.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*G1nkXT6Q0K93Yr6bazoRFw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*q42byvC3hw_eqq2YFazXoQ.png" /><figcaption>Image: Page speed insights — mobile performance improvements</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*a4uZy6ym9prUX2QrocjPNw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7Wj0iglrH3v9ynwzSGEHMQ.png" /><figcaption>Image: Page speed insights — desktop performance improvements</figcaption></figure><h3>Open Source | Star it or fork it</h3><p>If you are interested in incorporating any of these changes to your own documentation site, our docs are <a href="https://github.com/appbaseio/Docs">hosted in the open on Github</a> and licensed under an MIT license. Go star it or fork it.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d86bb18914a7" width="1" height="1" alt=""><hr><p><a href="https://medium.appbase.io/improving-the-developer-experience-for-appbase-io-docs-d86bb18914a7">Improving the developer experience for appbase.io docs</a> was originally published in <a href="https://medium.appbase.io">All things #search</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[March ‘22: ReactiveSearch Digest]]></title>
            <link>https://medium.appbase.io/march-22-reactivesearch-digest-7b495b7cc3b6?source=rss----fda0e3655d6f---4</link>
            <guid isPermaLink="false">https://medium.com/p/7b495b7cc3b6</guid>
            <category><![CDATA[elastic]]></category>
            <category><![CDATA[opensearch]]></category>
            <category><![CDATA[elasticsearch]]></category>
            <category><![CDATA[reactivesearch]]></category>
            <category><![CDATA[appbase]]></category>
            <dc:creator><![CDATA[Siddharth Kothari]]></dc:creator>
            <pubDate>Thu, 17 Mar 2022 12:48:50 GMT</pubDate>
            <atom:updated>2022-03-17T12:48:50.593Z</atom:updated>
            <content:encoded><![CDATA[<h4>We’ve moved to a new home for our blog publications at <a href="https://blog.reactivesearch.io/">https://blog.reactivesearch.io/</a>. Subscribe over here for future updates on all things search!</h4><h4>Updates from this month:</h4><p>We’ve been focusing on creating updated examples and blog posts that utilize the ReactiveSearch UI kit. Here are three updates for React and Vue developers looking to build search apps:</p><h3>React dashboard search template</h3><blockquote><a href="https://blog.reactivesearch.io/react-dashboard-template-with-elasticsearch">https://blog.reactivesearch.io/react-dashboard-template-with-elasticsearch</a></blockquote><blockquote>(7 mins read)</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/999/1*764Ubma0nQs7eSS4diHoFg.gif" /><figcaption>Demo of what this template can do</figcaption></figure><p>Are you looking for a ready-to-use and performant boilerplate for your next SaaS dashboard or BI dashboard project? Perhaps with advanced search capabilities! 🤩</p><p>What differentiates this template from other UI templates is that it works out of the box with both Elasticsearch and OpenSearch engines (you can scale to GBs of data and still get sub-second responses) and its use of ReactiveSearch — allowing you to swap any of the components in the template with others.</p><p>Want it to work only for logged-in users? We’ve got you covered ✅</p><p>Want to display aggregations data using rich charts? Look no further ✅</p><p><a href="https://appbaseio.gumroad.com/l/EqqLI">Buy the template from Gumroad for $99 — support included</a></p><h3>Build a search UI with Vue and Elasticsearch</h3><blockquote><a href="https://blog.reactivesearch.io/appsearch-with-vuejs-and-elasticsearch">https://blog.reactivesearch.io/appsearch-with-vuejs-and-elasticsearch</a></blockquote><blockquote>(9 mins read)</blockquote><p>This is a follow-along post (takes a couple of hours to build this end-to-end) showing how to build a consumer grade search UI using Vue and Elasticsearch. It makes use of the Vue variant of the <a href="https://github.com/appbaseio/reactivesearch">https://github.com/appbaseio/reactivesearch</a> library (Apache 2.0 licensed) that’s being used by over 100 projects for building their search UI.</p><p>The example here is of building a book search UI using Vue.JS and Elasticsearch, but the general principles covered should apply to other kinds of UIs as well.</p><p>Did you know ReactiveSearch is the only UI kit for Vue.JS that offers search UI components that work out of the box with both Elasticsearch and OpenSearch search engines?</p><p>We’ve been actively maintaining this UI kit since 2019, and it’s seeing serious production usage. Head over to the docs at: <a href="https://docs.appbase.io/docs/reactivesearch/vue/overview/QuickStart/">https://docs.appbase.io/docs/reactivesearch/vue/overview/QuickStart/</a> to see how to implement server-side rendering, bring your own UI components or even design systems.</p><h3>Build a search UI with React and Elasticsearch</h3><blockquote><a href="https://blog.reactivesearch.io/react-search-ui-tutorial">https://blog.reactivesearch.io/react-search-ui-tutorial</a></blockquote><blockquote>(14 mins read)</blockquote><p>This is a follow-along post (takes a couple of hours to build this end-to-end) showing how to build a consumer grade search UI using React and Elasticsearch. It makes use of the <a href="https://github.com/appbaseio/reactivesearch">https://github.com/appbaseio/reactivesearch</a> library (Apache 2.0 licensed) that’s being used by over 1,200 projects for building their search UI.</p><p>The example used here is of a Netflix like movie search UI, but the general principles apply if you’re looking to build an e-commerce or aggregator like search UI.</p><p>There are tons of things you can do with ReactiveSearch that aren’t covered in this post, like optimize for SEO with server-side rendering, implementing authenticated search (Basic Auth, JWT), build geo search (we support OpenStreetMaps and GoogleMaps) UIs to name a few. You can start with the docs link from here: <a href="https://docs.appbase.io/docs/reactivesearch/v3/overview/quickstart/">https://docs.appbase.io/docs/reactivesearch/v3/overview/quickstart/</a>.</p><p>We will be publishing advanced tutorials next showing how to build Emoji search using natural language understanding, building knowledge graph search applications, building search with OpenAI and more. You can subscribe to this publication to get these right into your inbox!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7b495b7cc3b6" width="1" height="1" alt=""><hr><p><a href="https://medium.appbase.io/march-22-reactivesearch-digest-7b495b7cc3b6">March ‘22: ReactiveSearch Digest</a> was originally published in <a href="https://medium.appbase.io">All things #search</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Find the ✅ UI Library for your next Search  Project]]></title>
            <link>https://medium.appbase.io/find-the-ui-library-for-your-next-search-project-df6aec928304?source=rss----fda0e3655d6f---4</link>
            <guid isPermaLink="false">https://medium.com/p/df6aec928304</guid>
            <category><![CDATA[opensearch]]></category>
            <category><![CDATA[reactivesearch]]></category>
            <category><![CDATA[mongodb]]></category>
            <category><![CDATA[elasticsearch]]></category>
            <category><![CDATA[appbase]]></category>
            <dc:creator><![CDATA[Siddharth Kothari]]></dc:creator>
            <pubDate>Mon, 21 Feb 2022 16:52:59 GMT</pubDate>
            <atom:updated>2022-02-21T16:52:59.837Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*cJWbhM64F96_3MEMYwFBoA.png" /></figure><p>At appbase.io, we’ve published over 10 different search UI libraries over the past few years. Depending on your search use-case: site search, e-commerce or geo search, performance requirements like SEO and server-side rendering, bundle size or the design flexibility needed to apply styles and integrating a design system, one may be a better fit than another. And it can be hard to tell which one to choose from all the available options out there.</p><p>So here’s a short quiz 🪄 that you can take to find the search UI library that best fits your use-case, performance and design requirements. You can also share your detailed use-case to get a personalized recommendation from our team. :-)</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fsurvey.typeform.com%2Fto%2FZyd2RDro%3Ftypeform-embed%3Doembed%26typeform-medium%3Dembed-oembed%26format%3Djson&amp;display_name=Typeform&amp;url=https%3A%2F%2Fsurvey.typeform.com%2Fto%2FZyd2RDro&amp;image=https%3A%2F%2Fimages.typeform.com%2Fimages%2F8tFz9mrPCQ6q%2Fimage%2Fdefault&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=typeform" width="900" height="600" frameborder="0" scrolling="no"><a href="https://medium.com/media/7cf0e9bbb3fc1a89e5e3f1efa77b3521/href">https://medium.com/media/7cf0e9bbb3fc1a89e5e3f1efa77b3521/href</a></iframe><p>Or you can <a href="https://docs.appbase.io/docs/reactivesearch/gettingstarted/">head to our docs</a> to dig into all the available UI libraries as well as the no-code UI builder. 👀</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=df6aec928304" width="1" height="1" alt=""><hr><p><a href="https://medium.appbase.io/find-the-ui-library-for-your-next-search-project-df6aec928304">Find the ✅ UI Library for your next Search 🔎 Project</a> was originally published in <a href="https://medium.appbase.io">All things #search</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Build Geo And Site Search Apps with No-code / Low-code]]></title>
            <link>https://medium.appbase.io/build-geo-and-site-search-apps-with-no-code-low-code-33cdc9e07a19?source=rss----fda0e3655d6f---4</link>
            <guid isPermaLink="false">https://medium.com/p/33cdc9e07a19</guid>
            <category><![CDATA[elasticsearch]]></category>
            <category><![CDATA[appbase]]></category>
            <category><![CDATA[reactivesearch]]></category>
            <category><![CDATA[opensearch]]></category>
            <category><![CDATA[no-code-platform]]></category>
            <dc:creator><![CDATA[Siddharth Kothari]]></dc:creator>
            <pubDate>Fri, 11 Feb 2022 12:47:06 GMT</pubDate>
            <atom:updated>2022-02-11T12:47:06.629Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="Appbase.io UI Builder’s search layout picker screenshot" src="https://cdn-images-1.medium.com/max/1024/1*Mxv6nub3XSz0GKbpNbnrrg.png" /><figcaption><strong>Image:</strong> Screenshot from appbase.io’s UI Builder dashboard</figcaption></figure><p>Appbase.io’s no-code search UI builder now ships with an inline code editor that enables creating <strong>true consumer grade</strong> site search, e-commerce search, recommendations and 🆕 🗺 geo search experiences.</p><p>How does UI Builder enable building consumer grade searches:</p><blockquote>For starters, appbase.io provides an app search platform for Elasticsearch and Opensearch clusters. You can connect your existing Elasticsearch cluster or host it with appbase.io.</blockquote><ul><li>Login to your appbase.io dashboard and go to the UI Builder tab and choose the search index to build the search UI against.</li><li>Next, pick a search layout theme, configure search relevance, configure the UI components (aka widgets) and results display format. All of this is configurable with no-code and takes only minutes. 🙌</li><li>The configurator generates a React app (<a href="https://github.com/appbaseio/reactivesearch">built with ReactiveSearch</a> ⭐️) that you can now export or edit it inline using codesandbox.io editor. The ability to edit the resulting code and persist the resulting changes is what makes it possible to build and ship production search experiences!</li></ul><figure><img alt="appbase.io UI Builder’s edit code inline feature screenshot" src="https://cdn-images-1.medium.com/max/1024/1*JWFIe393YPyIbVv49PJstQ.png" /><figcaption><strong>Image:</strong> Once configured, you can edit the code inline with a live preview</figcaption></figure><p>This experience is years ahead of what other search interface builders offer. But don’t take our word for it! <a href="http://dashboard.appbase.io/signup">You can sign up for a free 14-days trial with appbase.io and try it yourself</a>.</p><h4>Configuring Geo Search Experiences</h4><p>We will use an Airbnb search index to demonstrate a geo search experience built with appbase.io’s search UI builder and OpenStreetMaps.</p><p>To start with, pick the <strong>Geo</strong> theme.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MXm9laoSiykILH6XRul9mQ.png" /></figure><p>Next, we will configure the filters (aka facets) to show for <strong>Bedrooms</strong> and <strong>Bed Type</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6Eq1jMJda1EVpuDqD30PDQ.png" /><figcaption><strong>Image:</strong> Configure the filters to show</figcaption></figure><p>Finally, we will set the results fields to display and the map component to use: Here, we are using OpenStreetMaps but you can also easily pick GoogleMaps instead (note: This will require specifying the Google Maps API key)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tByC3nF3plUvyuSSEoIZgw.png" /><figcaption><strong>Image:</strong> Configure the search results layout</figcaption></figure><p>And voila! 🪄 We have the geo search UI ready to be customized with code 🧑‍💻👩‍💻</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fAA3iRySCC2i5GBWuVvBaQ.png" /><figcaption><strong>Image: </strong>A preview of the autosuggestions experience</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*azenJLNltff04Fgzqa18Yw.png" /><figcaption><strong>Image:</strong> A preview of the geo search experience</figcaption></figure><h4>Another Enhancement: Review and Save</h4><p>UI Builder now stages the changes as you make them and provides a live preview view, but they’re only persisted / deployed live once you review and save them. This strikes the right balance between deploying changes instantly while having a peace of mind! 😌</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2CxsFhORUwm0id5_nWoI4A.png" /><figcaption><strong>Image:</strong> Review changes before saving</figcaption></figure><p>Beyond enabling you to ship search experiences in hours instead of weeks, the search experiences can also record search analytics, provide performance insights into search relevance and content tweaks and make it a breeze to deploy changes continuously. 🔁</p><blockquote>UI Builder is available with Production and Enterprise plans, as well as an addon to Sandbox and Starter plans. <a href="https://dashboard.appbase.io/signup">Sign up for a free 14-days trial over here</a>.</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=33cdc9e07a19" width="1" height="1" alt=""><hr><p><a href="https://medium.appbase.io/build-geo-and-site-search-apps-with-no-code-low-code-33cdc9e07a19">Build Geo And Site Search Apps with No-code / Low-code</a> was originally published in <a href="https://medium.appbase.io">All things #search</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ ReactiveSearch Scripts: JavaScript functions for when milliseconds matter ]]></title>
            <link>https://medium.appbase.io/reactivesearch-scripts-javascript-functions-for-when-milliseconds-matter-de8d11df75ed?source=rss----fda0e3655d6f---4</link>
            <guid isPermaLink="false">https://medium.com/p/de8d11df75ed</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[elasticsearch]]></category>
            <category><![CDATA[reactivesearch]]></category>
            <category><![CDATA[function]]></category>
            <category><![CDATA[appbase]]></category>
            <dc:creator><![CDATA[Siddharth Kothari]]></dc:creator>
            <pubDate>Wed, 02 Feb 2022 14:22:10 GMT</pubDate>
            <atom:updated>2022-02-02T14:27:26.466Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*f5VQignYO74r9qJje5P1Tw.jpeg" /><figcaption><strong>Introducing: </strong>JavaScript user-defined functions to enhance the search experience</figcaption></figure><blockquote>ReactiveSearch scripts is the outcome of when a JavaScript developer walks into an Elasticsearch bar 🍺</blockquote><p><strong>On a more serious note: </strong>When building a production grade search experience, one of the key challenges one runs into is defining a search relevancy strategy that works at scale. Lucene based search engines like ElasticSearch get you pretty far with a good out of the box algorithm along with tuning options. But when working at scale, there are hundreds of edge-cases, cascading side effects, long tail searches, synonyms to consider that you need to rely on an external system. At appbase.io, we have built Query Rules to meet this challenge — a set of “If this, then that” style rules that are configurable to meet a business’s unique search relevance needs.</p><p>However, at scale — using rules can be cumbersome and hard to maintain. To meet this need, we’re announcing a beta release of <strong>ReactiveSearch Scripts</strong>, a feature we’ve been hacking 🛠 on for the past several months. Scripts are user defined JavaScript functions that are executed in a latency optimized manner (powered by Google’s <a href="https://v8.dev/">V8 engine</a>). These are typically used during the request or response cycle of a search query, but can also be invoked with additional trigger conditions, or at a periodic schedule as a cron job.</p><blockquote>Scripts are currently available as an action with appbase.io <a href="https://docs.appbase.io/docs/search/rules/">query rules</a> (more ways to utilize scripts coming 🔜)</blockquote><h3>Why and When To Use ReactiveSearch Scripts</h3><p>Scripts are architecturally similar to Cloudflare Workers (in that they utilize the V8 engine for execution) and serve similar use-cases to popular FaaS services such as AWS Lambda, Azure Cloud Functions, et al. Hence, an important question to address is when ReactiveSearch scripts are useful and when other options might be better.</p><p>If you’re powering search experiences where milliseconds matter, you should be using scripts. Besides utilizing the V8 engine and not suffering the cold start problem (since we don’t use containers), scripts are also run on the same server environment where the search engine and the appbase.io service is run. Scripts typically run in under <strong>5ms [1]</strong> (~10x-20x faster than other services) and can perform IO operations against the search engine faster than an external service running in a different region or edge can.</p><blockquote><strong>[1]</strong> A request / response transformation script is this quick 🚀. Additional behaviors (e.g. performing NLP or using crypto utils may incur some more latencies). We will be benchmarking this more thoroughly in a future post.</blockquote><p>ReactiveSearch Scripts are purposefully designed to serve search use-cases. They come with global packages like fetch, compromise (nlp), crypto.js, lodash to help with common request and response manipulations.</p><h4>When using another FaaS service is better</h4><p>If you’re performing an operation e.g. clustering, creating dense vectors, indexing data that’s not user facing or time-sensitive, ReactiveSearch scripts don’t offer an edge to using other FaaS services.</p><h3>Use-cases for ReactiveSearch Scripts</h3><h4>Modify a request before querying Elasticsearch</h4><ul><li>Use script to pre-process the user search query using NLP techniques</li><li>Add dynamic fields to an Elasticsearch indexing request, for e.g. calculate age field from date of birth and add it to the document being indexed</li></ul><h4>Transform the search response</h4><ul><li>Promote or hide search results based on a dynamic criterion</li><li>Use an external API call to return additional context with the search response (e.g. implement a <strong>did you mean</strong> functionality)</li></ul><h4>Create side effects</h4><ul><li>Implement a saved search functionality by posting search query to a 3rd party API (asynchronously)</li><li>Log indexing requests or search queries that match a set criterion</li><li>Send e-mail alerts based on a certain set of search queries</li></ul><h4>Run periodically</h4><p>A script can also be run in a cron mode, where it is invoked at specific intervals.</p><ul><li>Regularly update the search index with data from a primary data source (e.g. Sync updated data from Postgres or MongoDB),</li><li>Enrich data in the search index, e.g. perform named entity recognition,</li><li>Perform classification of data, e.g. unsupervised clustering</li></ul><p>Because scripts can call external APIs in both sync and async modes, there are no limits to what is possible.</p><h3>Show me the code 🧑‍💻</h3><p>The code snippet below uses the appbase.io dashboard’s editor functionality to validate a script. It uses <a href="https://www.npmjs.com/package/compromise">compromise.js</a> (a built-in module available in ReactiveSearch scripts) to interpret a user query such as: “<strong>smart</strong> <strong>phones under 10K</strong>” to extract the price information and then set a filter for the price before querying Elasticsearch.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4Ldk0Up7ONxEZncpZG3JdA.png" /><figcaption><strong>Image:</strong> appbase.io dashboard’s validate script editor: You can</figcaption></figure><p>The validate script dashboard feature uses the Monaco editor (the code editor that powers VSCode IDE) and lets you:</p><ul><li>Interactively write a script and catch any compile time errors</li><li>Catch any runtime errors by simulating an entire request / response cycle</li><li>Get a real response by hitting the search engine</li><li>View any user set console logs</li><li>Set environment variables that are available during the runtime.</li></ul><p>The _script/validate endpoint can also be used as an API outside of the dashboard, so here’s a Repl that you can try out live:</p><p><a href="https://replit.com/@appbaseio/Script-Request-modification-with-compromise">Script - Request modification with compromise</a></p><p>Scripts are available today as part of <a href="https://docs.appbase.io/docs/search/rules/">Query Rules</a> as a script action — a set of configurable rules to extend the search engine’s default relevance strategy.</p><p>Read more about <a href="https://docs.appbase.io/docs/search/scripts">scripts in the docs</a>, and <a href="https://docs.appbase.io/docs/search/scripts/examples">play with code examples</a> on using additional authorization schemes with crypto.js, using sync and async fetch calls to interact with external APIs, modify an indexing or bulk request, using cron script to add a document into the search index periodically.</p><h4>Coming Soon ➡️</h4><p>If you’re excited about the potential of ⚡️ fast JavaScript functions, stay tuned for more posts! We’re working on improving the scripts Dx and making them more powerful 🦾</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=de8d11df75ed" width="1" height="1" alt=""><hr><p><a href="https://medium.appbase.io/reactivesearch-scripts-javascript-functions-for-when-milliseconds-matter-de8d11df75ed">🆕 ReactiveSearch Scripts: JavaScript functions for when milliseconds matter 🚀</a> was originally published in <a href="https://medium.appbase.io">All things #search</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Build Typeahead Experiences With Algolia Autocomplete.js And Elasticsearch]]></title>
            <link>https://medium.appbase.io/build-typeahead-experiences-with-algolia-autocomplete-js-and-elasticsearch-4aa32dadcb02?source=rss----fda0e3655d6f---4</link>
            <guid isPermaLink="false">https://medium.com/p/4aa32dadcb02</guid>
            <category><![CDATA[opensearch]]></category>
            <category><![CDATA[appbase]]></category>
            <category><![CDATA[elasticsearch]]></category>
            <category><![CDATA[autocomplete]]></category>
            <category><![CDATA[algolia]]></category>
            <dc:creator><![CDATA[Siddharth Kothari]]></dc:creator>
            <pubDate>Fri, 17 Dec 2021 14:21:38 GMT</pubDate>
            <atom:updated>2021-12-17T14:35:05.628Z</atom:updated>
            <content:encoded><![CDATA[<figure><a href="https://codesandbox.io/s/github/appbaseio/autocomplete-suggestions-plugin/tree/main/examples/basic-example?from-embed"><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hYBicjdEOv1g1cAr1jlKxg.png" /></a><figcaption><a href="https://codesandbox.io/s/github/appbaseio/autocomplete-suggestions-plugin/tree/main/examples/basic-example?from-embed">A live example showing the typeahead experience on a bestbuy search index using Algolia Autocomplete</a></figcaption></figure><p>Autocomplete.js is an open source, production-ready and widely popular JavaScript library for building autocomplete experiences from <a href="https://www.algolia.com/doc/ui-libraries/autocomplete/introduction/what-is-autocomplete/">Algolia</a>.</p><p>In this post, we will use an <a href="https://github.com/appbaseio/autocomplete-suggestions-plugin">autocomplete.js plugin created by appbase.io</a> (also open-source) to create rich typeahead experiences powered by Elasticsearch or OpenSearch.</p><p>First, let’s see a live demo of autocomplete.js powering a typeahead experience using a sample best buy search dataset:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcodesandbox.io%2Fembed%2Fm388e&amp;display_name=CodeSandbox&amp;url=https%3A%2F%2Fcodesandbox.io%2Fs%2Fm388e&amp;image=https%3A%2F%2Fcodesandbox.io%2Fapi%2Fv1%2Fsandboxes%2Fm388e%2Fscreenshot.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=codesandbox" width="1000" height="500" frameborder="0" scrolling="no"><a href="https://medium.com/media/9464866f4c72816342f662d35452515e/href">https://medium.com/media/9464866f4c72816342f662d35452515e/href</a></iframe><h3>How It Works</h3><p>Autocomplete.js offers a sources API that allows fetching data from any source. The <a href="https://github.com/appbaseio/autocomplete-suggestions-plugin">autocomplete-suggestions-plugin</a> from appbase.io uses this feature to query the appbase.io suggestions API. The stack looks something like this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*g_YYI10pqPUxHRY5HZ_jnA.png" /></figure><p>As a developer, you would use the autocomplete.js suggestions plugin from appbase.io to create typeahead experiences.</p><h4>Why use appbase.io suggestions API (or search API)?</h4><p>While building an autocomplete experience based on the search index can be done with Elasticsearch itself, the appbase.io suggestions API exposes a declarative API for combining:</p><ul><li>Popular suggestions (searches other end users made that resulted in a positive outcome),</li><li>Recent suggestions (your own history of searches) as well as,</li><li>Query rules (think promoted / sponsored suggestions)</li></ul><p>along with searching the index in a streamlined manner. In addition to these additional querying capabilities, it also allows returning suggestions by a category field, setting a URL field when hyperlinking externally is useful, and displaying predictive suggestions (similar to how Google’s typeahead works) instead of returning the entire field’s match value.</p><p>Any combination of all of the above can be configured declaratively within a single API call — allowing you to build autocomplete experiences tailored to your specific use-case.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcarbon.now.sh%2Fembed%2F8KZOWek6JpN1XBRPkcix%3F&amp;display_name=Carbon&amp;url=https%3A%2F%2Fcarbon.now.sh%2F8KZOWek6JpN1XBRPkcix&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;scroll=auto&amp;schema=carbon" width="1024" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/18eb27a3a91b3884e50eefc2e0d04e36/href">https://medium.com/media/18eb27a3a91b3884e50eefc2e0d04e36/href</a></iframe><p>In less than 60 lines of code, we have an autocomplete typeahead experience with our preferred config for the suggestions API all setup 🙌</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcodesandbox.io%2Fembed%2F0wjk2&amp;display_name=CodeSandbox&amp;url=https%3A%2F%2Fcodesandbox.io%2Fs%2F0wjk2&amp;image=https%3A%2F%2Fcodesandbox.io%2Fapi%2Fv1%2Fsandboxes%2F0wjk2%2Fscreenshot.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=codesandbox" width="1000" height="500" frameborder="0" scrolling="no"><a href="https://medium.com/media/b41767a763191d7a3f8080426823c9a0/href">https://medium.com/media/b41767a763191d7a3f8080426823c9a0/href</a></iframe><h3>Examples</h3><p>Here are different examples of using typeahead use-cases:</p><ul><li>The above basic example with an added results component</li></ul><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcodesandbox.io%2Fembed%2Fm388e&amp;display_name=CodeSandbox&amp;url=https%3A%2F%2Fcodesandbox.io%2Fs%2Fm388e&amp;image=https%3A%2F%2Fcodesandbox.io%2Fapi%2Fv1%2Fsandboxes%2Fm388e%2Fscreenshot.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=codesandbox" width="1000" height="500" frameborder="0" scrolling="no"><a href="https://medium.com/media/9464866f4c72816342f662d35452515e/href">https://medium.com/media/9464866f4c72816342f662d35452515e/href</a></iframe><ul><li>An advanced example that uses two instances of the autocomplete suggestions plugin</li></ul><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcodesandbox.io%2Fembed%2Fgithub%2Fappbaseio%2Fautocomplete-suggestions-plugin%2Ftree%2Fmain%2Fexamples%2Fadvanced-example%3Ffontsize%3D14%26hidenavigation%3D1%26theme%3Ddark&amp;display_name=CodeSandbox&amp;url=https%3A%2F%2Fcodesandbox.io%2Fembed%2Fgithub%2Fappbaseio%2Fautocomplete-suggestions-plugin%2Ftree%2Fmain%2Fexamples%2Fadvanced-example%3Ffontsize%3D14%26hidenavigation%3D1%26theme%3Ddark&amp;image=https%3A%2F%2Fcodesandbox.io%2Fapi%2Fv1%2Fsandboxes%2Fyie7o%2Fscreenshot.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=codesandbox" width="1000" height="500" frameborder="0" scrolling="no"><a href="https://medium.com/media/d91eaa9725df8de97fb0102f188dc1ee/href">https://medium.com/media/d91eaa9725df8de97fb0102f188dc1ee/href</a></iframe><ul><li>An example showing category suggestions</li></ul><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcodesandbox.io%2Fembed%2Fgithub%2Fappbaseio%2Fautocomplete-suggestions-plugin%2Ftree%2Fmain%2Fexamples%2Fcategory-field-example%3Ffontsize%3D14%26hidenavigation%3D1%26theme%3Ddark&amp;display_name=CodeSandbox&amp;url=https%3A%2F%2Fcodesandbox.io%2Fembed%2Fgithub%2Fappbaseio%2Fautocomplete-suggestions-plugin%2Ftree%2Fmain%2Fexamples%2Fcategory-field-example%3Ffontsize%3D14%26hidenavigation%3D1%26theme%3Ddark&amp;image=https%3A%2F%2Fcodesandbox.io%2Fapi%2Fv1%2Fsandboxes%2Fucutd%2Fscreenshot.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=codesandbox" width="1000" height="500" frameborder="0" scrolling="no"><a href="https://medium.com/media/67fdd479a0bd9e1fbbff29a8b7ddc4fa/href">https://medium.com/media/67fdd479a0bd9e1fbbff29a8b7ddc4fa/href</a></iframe><ul><li>An example using Autocomplete.js with React</li></ul><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcodesandbox.io%2Fembed%2F5pdyt&amp;display_name=CodeSandbox&amp;url=https%3A%2F%2Fcodesandbox.io%2Fs%2F5pdyt&amp;image=https%3A%2F%2Fcodesandbox.io%2Fapi%2Fv1%2Fsandboxes%2F5pdyt%2Fscreenshot.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=codesandbox" width="1000" height="500" frameborder="0" scrolling="no"><a href="https://medium.com/media/f9c61baed30648a0c2b107e8327a683a/href">https://medium.com/media/f9c61baed30648a0c2b107e8327a683a/href</a></iframe><ul><li>An example using Autocomplete.js with Vue</li></ul><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcodesandbox.io%2Fembed%2Fgithub%2Fappbaseio%2Fautocomplete-suggestions-plugin%2Ftree%2Fmain%2Fexamples%2Fuse-with-vue%3Ffontsize%3D14%26hidenavigation%3D1%26theme%3Ddark&amp;display_name=CodeSandbox&amp;url=https%3A%2F%2Fcodesandbox.io%2Fembed%2Fgithub%2Fappbaseio%2Fautocomplete-suggestions-plugin%2Ftree%2Fmain%2Fexamples%2Fuse-with-vue%3Ffontsize%3D14%26hidenavigation%3D1%26theme%3Ddark&amp;image=https%3A%2F%2Fcodesandbox.io%2Fapi%2Fv1%2Fsandboxes%2Fzlnyx%2Fscreenshot.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=codesandbox" width="1000" height="500" frameborder="0" scrolling="no"><a href="https://medium.com/media/0147545984aa19b1fb3bbcc57f42b024/href">https://medium.com/media/0147545984aa19b1fb3bbcc57f42b024/href</a></iframe><ul><li>An example showing how to add custom analytics events with the search query</li></ul><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcodesandbox.io%2Fembed%2Fqx5im&amp;display_name=CodeSandbox&amp;url=https%3A%2F%2Fcodesandbox.io%2Fs%2Fqx5im&amp;image=https%3A%2F%2Fcodesandbox.io%2Fapi%2Fv1%2Fsandboxes%2Fqx5im%2Fscreenshot.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=codesandbox" width="1000" height="500" frameborder="0" scrolling="no"><a href="https://medium.com/media/1e48f2a3db007d28c70e23e1610d11a4/href">https://medium.com/media/1e48f2a3db007d28c70e23e1610d11a4/href</a></iframe><h3>Summary</h3><p>We just how to use Autocomplete.js plugin with an Elasticsearch or OpenSearch cluster using the <a href="https://github.com/appbaseio/autocomplete-suggestions-plugin">autocomplete-suggestions-plugin</a>.</p><p>It only takes about 60 lines of code to get a fully functional autocomplete experience tailored to your use-case up and running (including what kinds of suggestions to fetch and how to render them).</p><p>Finally, we saw different examples of using autocomplete.js — from using it with Vanilla JavaScript, React, or Vue to using multiple instances of the plugin to render different kinds of suggestions to sending custom analytics events.</p><p>You can read the getting started docs for using autocomplete.js with Elasticsearch over here:</p><p><a href="https://docs.appbase.io/docs/reactivesearch/autocomplete-plugin/quickstart/">Appbase.io Docs - Search stack for Elasticsearch</a></p><p>If you would like to dig deeper, check out the API reference over here:</p><p><a href="https://docs.appbase.io/docs/reactivesearch/autocomplete-plugin/apireference/">Appbase.io Docs - Search stack for Elasticsearch</a></p><p>Or read various guides on integrating with React, Vue, adding popular suggestions, adding recent suggestions, displaying multiple types of results, sending custom analytics events, adding a custom renderer, reshaping sources, and more:</p><p><a href="https://docs.appbase.io/docs/reactivesearch/autocomplete-plugin/guides/">Appbase.io Docs - Search stack for Elasticsearch</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4aa32dadcb02" width="1" height="1" alt=""><hr><p><a href="https://medium.appbase.io/build-typeahead-experiences-with-algolia-autocomplete-js-and-elasticsearch-4aa32dadcb02">Build Typeahead Experiences With Algolia Autocomplete.js And Elasticsearch</a> was originally published in <a href="https://medium.appbase.io">All things #search</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Build app search experiences without architectural complexity using MongoDB Atlas Search]]></title>
            <link>https://medium.appbase.io/build-app-search-experiences-using-mongodb-atlas-search-e94c33363bcd?source=rss----fda0e3655d6f---4</link>
            <guid isPermaLink="false">https://medium.com/p/e94c33363bcd</guid>
            <category><![CDATA[reactivesearch]]></category>
            <category><![CDATA[appbase]]></category>
            <category><![CDATA[mongodb]]></category>
            <category><![CDATA[react]]></category>
            <category><![CDATA[lucene]]></category>
            <dc:creator><![CDATA[Siddharth Kothari]]></dc:creator>
            <pubDate>Tue, 30 Nov 2021 15:02:47 GMT</pubDate>
            <atom:updated>2021-12-01T12:06:36.539Z</atom:updated>
            <content:encoded><![CDATA[<figure><a href="https://codesandbox.io/s/awesome-montalcini-kdpv6?file=/src/index.js"><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ARkh1ToPrKr8oGHP4Gvn4A.png" /></a><figcaption>Demo of app search built with <strong>ReactiveSearch UI components</strong> and powered by MongoDB Atlas Search, try the live demo over here</figcaption></figure><h3>Introduction</h3><p>Search engines have become essential components for almost every user-facing application. For retailers, search results and recommendations directly drive revenue — since they enable users to find products fast, discover new products they hadn’t previously considered, all while offering businesses opportunities to better understand each customer and deepen engagement.</p><p>Being able to tailor experiences unique to a user’s search preferences, in order to surface more relevant content to them, is especially important for social media, digital media and e-commerce apps. For example, if I search for houseplant care videos on TikTok, I’ll be more likely to receive those types of recommendations moving forward.</p><h3>Key Problems with Building App Search Today</h3><blockquote>The majority of search experiences built today are powered by bolt-on search solutions like Elasticsearch, Solr, or Algolia.</blockquote><p>Because of the bolt-on nature of search solutions that are prevalent today, the total cost comes down to much more than the sticker price of the solution itself. The primary costs come from the ongoing operational overhead of maintaining the data sync pipeline and search infrastructure, the learning curve associated with the solution, and the development effort that goes into building and maintaining search interfaces.</p><p>A bolt-on solution requires syncing data (replicating, maintaining consistency and policies to age data out) between your operational database and your search engine — this is undifferentiated work that slows down productivity of your development teams.</p><p>Maintaining different technologies to satisfy speed and relevance requirements means more overhead, learning curves and resource specialization needed to have people use and manage different technologies, e.g. a team may choose the operational database functionality for exact match use cases, a full-text search engine to power a website search bar, and a specialized search engine for an internal knowledge base portal.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*SaaMq8gFIA_mjlK2" /></figure><p>Search interfaces are notoriously hard to build as they sit at the intersection of design, data, relevance, and high performance. Take something that is as simple as a type-ahead or autocomplete UI.</p><p>Autocomplete done right should show relevant suggestions instantly from the first keystroke. Search-as-you-type experiences for popular consumer search sites further leverage telemetry data to show relevant suggestions that are also popular with other users, or take a user’s own past searches into consideration to personalize suggestions. It also needs to consider the design differences inherent to a mobile form factor as compared to a web device.</p><p>Problems similar to this apply to the entire search interface: whether it’s detecting search intent (e.g. applying a facet criteria based on user search), merchandising search results, rolling out search relevance strategy changes based on A/B tests, or providing telemetry feedback on user actions.</p><p>While getting these problems right can have an invaluable impact, they can often contribute to weeks and months of undifferentiated development/maintenance efforts.</p><h3>MongoDB Atlas Search: A New Full-Text Search Solution</h3><p><a href="https://www.mongodb.com/atlas/search?utm_campaign=appbase&amp;utm_source=medium&amp;utm_medium=influencers">MongoDB Atlas Search</a> makes it easier for organizations to integrate powerful full-text search capabilities into applications while minimizing backend complexity. Because Atlas Search is fully integrated with <a href="https://www.mongodb.com/atlas/database?utm_campaign=appbase&amp;utm_source=medium&amp;utm_medium=influencers">MongoDB Atlas</a>, the global multi-cloud database service, there’s no need to replicate data and manage distinct data environments to add search functionality to your app. You have a single system of record and you can avoid setting up, maintaining, and scaling a separate search platform.</p><p>Atlas Search works by embedding an Apache Lucene engine on each node of a MongoDB Atlas cluster, and is designed to be simple to use without any extra infrastructure setup involved. You define the field mappings and index options for the documents in a collection, then Atlas Search will index the data and make it available for relevance-based search. Once data is indexed by Atlas Search, you can build search queries using the MongoDB aggregation pipeline. You use the same drivers and query syntax as the database, unifying the developer experience to eliminate context switching between two totally different technologies.</p><p>Atlas Search has dozens of search <a href="https://docs.atlas.mongodb.com/reference/atlas-search/operators/">operators</a> you can use to refine your results and craft complex search logic — like autocomplete, filters, and scoring — within a single search operation. Atlas Search also recently introduced <a href="https://www.mongodb.com/blog/post/100x-faster-facets-counts-mongodb-atlas-search-public-preview">Lucene-powered facets in public preview</a>, making faceting and counting 100x faster than before!</p><p>With the <a href="https://docs.appbase.io/docs/reactivesearch/atlas-search/overview/">ReactiveSearch MongoDB Realm</a> project, developers can also create powerful search UIs using the ReactiveSearch and Searchbox UI kits available in React, Vue, JavaScript and React Native. It brings down the time to build consumer-grade search experiences from weeks and months to just days, leaving more time for your development teams to do differentiated work.</p><p>The ReactiveSearch UI kit from appbase.io has been used by over a thousand projects to create search UIs for marketplaces, aggregators, SaaS dashboards, and e-commerce storefronts. It comes with over 20 pre-built UI components for search boxes, a variety of list and range facets, results, and maps, or can be integrated with your own design components.</p><p>Here’s an app search experience built in ~80 lines of code using ReactiveSearch.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcodesandbox.io%2Fembed%2Fawesome-montalcini-kdpv6%3Ffontsize%3D14%26hidenavigation%3D1%26theme%3Ddark&amp;display_name=CodeSandbox&amp;url=https%3A%2F%2Fcodesandbox.io%2Fembed%2Fawesome-montalcini-kdpv6%3Ffontsize%3D14%26hidenavigation%3D1%26theme%3Ddark&amp;image=https%3A%2F%2Fcodesandbox.io%2Fapi%2Fv1%2Fsandboxes%2Fkdpv6%2Fscreenshot.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=codesandbox" width="1000" height="500" frameborder="0" scrolling="no"><a href="https://medium.com/media/fed2c8bf2e1403bedf998f2b66f96fe0/href">https://medium.com/media/fed2c8bf2e1403bedf998f2b66f96fe0/href</a></iframe><p>Check out more search UI component demos for numeric and text facets, search-as-you-type experiences, and geo search in <a href="https://docs.appbase.io/docs/reactivesearch/atlas-search/search-examples-with-react/">React</a> and <a href="https://docs.appbase.io/docs/reactivesearch/atlas-search/search-examples-with-vue/">Vue</a> over here.</p><h3>Start Building a Better App Search Experience</h3><p><a href="https://www.mongodb.com/cloud/atlas/register?utm_campaign=appbase&amp;utm_source=medium&amp;utm_medium=influencers">Sign up for MongoDB Atlas today</a> to start simplifying your application stack. You can try Atlas Search with sample datasets on a free-forever cluster first, then upgrade when you’re ready to power your production applications.</p><p><a href="https://docs.appbase.io/docs/reactivesearch/atlas-search/overview/">Follow this getting started guide</a> for a guided walkthrough on creating an end-to-end search experiences, or visit the <a href="https://docs.atlas.mongodb.com/atlas-search/?utm_campaign=appbase&amp;utm_source=medium&amp;utm_medium=influencers">Atlas Search Docs</a> for in-depth references and guides.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e94c33363bcd" width="1" height="1" alt=""><hr><p><a href="https://medium.appbase.io/build-app-search-experiences-using-mongodb-atlas-search-e94c33363bcd">Build app search experiences without architectural complexity using MongoDB Atlas Search</a> was originally published in <a href="https://medium.appbase.io">All things #search</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Query Rules: Introducing Preview Rule Effect]]></title>
            <link>https://medium.appbase.io/query-rules-introducing-preview-rule-effect-553446849384?source=rss----fda0e3655d6f---4</link>
            <guid isPermaLink="false">https://medium.com/p/553446849384</guid>
            <category><![CDATA[reactivesearch]]></category>
            <category><![CDATA[no-code]]></category>
            <category><![CDATA[appbase]]></category>
            <category><![CDATA[opensearch]]></category>
            <category><![CDATA[elasticsearch]]></category>
            <dc:creator><![CDATA[Siddharth Kothari]]></dc:creator>
            <pubDate>Tue, 23 Nov 2021 11:49:40 GMT</pubDate>
            <atom:updated>2021-11-23T11:50:30.416Z</atom:updated>
            <content:encoded><![CDATA[<p>We’re excited to introduce new enhancements to how Query Rules work. You will now be able to see the preview 👀 of query rule actions live from the dashboard.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*j7OJF2vIxErghldWBsQF8A.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*C-KwizgehrsFTJ7V0e0lUw.png" /><figcaption>Use <strong>Preview Rule</strong> <strong>Effect</strong> to understand how query rules are getting applied</figcaption></figure><p>You can also see the preview of documents matching the query condition before the rule is applied, allowing to have a better control on the actions to apply.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ov3_5FV3GZB_urLBdp3Cdg.png" /></figure><h3>What can you do with Query Rules</h3><p>Query Rules provide an intuitive way to tailor your search engine’s relevance algorithm to your business needs. You can:</p><ul><li>Promote results or suggestions</li><li>Hide results</li><li>Replace search term or specific parts of the search term (we support <strong>regexps</strong> making this super powerful)</li><li>Set search intent (e.g. apply a facet) based on the search term</li><li>Set a promotion banner or return any custom data.</li></ul><p>Query Rules are really powerful: they can be triggered based on searches on specific indexes, for specific terms or term patterns (thanks to <strong>regexps</strong>), for specific facet values, by the type of query (e.g. only run query rules for Autosuggestions) as well as run for a specific timeframe (e.g. run these rules for our Holiday specials!)</p><h3>Moar awesome stuff is coming to Query Rules</h3><p>We’re also working on an enhancement to allow creating your own JavaScript actions (that run in V8 engine) to modify the search query with full control, or the search results, or to create side effects (e.g. implement saved query functionality). This will be available in preview shortly, feel free to write to us to try this before the general release!</p><p><a href="https://medium.appbase.io/use-query-rules-to-create-a-more-natural-search-experience-6db26aac85e2">Use Query Rules To Create A More Natural Search Experience</a></p><p>Read more about query rules over <a href="https://docs.appbase.io/docs/search/rules/">here</a>.</p><p>Appbase.io is on a mission to enable creating the most demanding app search experiences (we support <a href="https://www.appbase.io/partnership/elastic">Elasticsearch</a> and <a href="https://appbase.io/partnership/opensearch">Opensearch</a> engines today), sign up for a <a href="https://dashboard.appbase.io/signup?utm_source=blog&amp;utm_medium=medium&amp;utm_campaign=appbaseio">14-day free trial now</a>!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=553446849384" width="1" height="1" alt=""><hr><p><a href="https://medium.appbase.io/query-rules-introducing-preview-rule-effect-553446849384">Query Rules: Introducing Preview Rule Effect</a> was originally published in <a href="https://medium.appbase.io">All things #search</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Build your faceted search app in 2 minutes with appbase.io’s interactive tutorials]]></title>
            <link>https://medium.appbase.io/build-your-faceted-search-app-in-2-minutes-with-appbase-ios-interactive-tutorials-c6b9913e42b9?source=rss----fda0e3655d6f---4</link>
            <guid isPermaLink="false">https://medium.com/p/c6b9913e42b9</guid>
            <category><![CDATA[tutorial]]></category>
            <category><![CDATA[reactivesearch]]></category>
            <category><![CDATA[opensearch]]></category>
            <category><![CDATA[appbase]]></category>
            <category><![CDATA[elasticsearch]]></category>
            <dc:creator><![CDATA[Siddharth Kothari]]></dc:creator>
            <pubDate>Thu, 18 Nov 2021 17:16:23 GMT</pubDate>
            <atom:updated>2021-11-18T17:20:55.590Z</atom:updated>
            <content:encoded><![CDATA[<h3>Build a faceted search app in 2 minutes with appbase.io’s interactive tutorials</h3><p>We’ve just revamped our onboarding tutorial. If you’re just signing up on appbase.io or looking through our docs, you can<a href="https://docs.appbase.io/tutorial"> try our interactive tutorial out</a> to create a SaaS, E-Commerce or Geo search app without any login or search cluster setup.</p><p>Takes only a couple of minutes to create your search app, and you can export the generate code via Codesandbox! 🚀</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jO7JxcuJ087W35L0Eg8eFA.png" /><figcaption>Start our interactive tutorial at <a href="https://docs.appbase.io/tutorial">docs.appbase.io/tutorial</a></figcaption></figure><h3>SaaS search</h3><p>If you’re building a SaaS search experience, this tutorial uses a TMDB 10,000 movies dataset and walks you through the process of setting searchable fields and facets.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QaeicttLdW1rc8KF6MiOIg.png" /></figure><h3>E-Commerce search</h3><p>If you’re building an E-Commerce search experience, this tutorial uses an E-commerce specific sample dataset and walks you through the process of setting searchable fields and facets.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Kx-CKIxgO5dyokYRysVrQg.png" /></figure><h3>Geo search</h3><p>If you’re building a geo search experience, this tutorial uses an earthquakes dataset and walks you through the process of creating a searchable and faceted maps search experience. We use OpenStreetMaps here, but one can also easily choose GoogleMaps to build this out.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wSvBISbDsUlGAQqyfv1QOg.png" /></figure><p>These tutorials leverage the <a href="https://opensource.appbase.io/reactivesearch">React version of ReactiveSearch UI kit</a> which has been used by more than 1,000 projects to create search experiences. We also offer equivalent UI kits for <a href="https://opensource.appbase.io/reactivesearch/vue">Vue</a>, <a href="https://opensource.appbase.io/searchbox">React Native and Flutter</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VYfg_4XOYmf_YjUZ_slkVw.png" /><figcaption>appbase.io features</figcaption></figure><p>Appbase.io offers a point-and-click search relevance control plane, search query rules (promote, hide, rewrite search parameters, return custom data back), out-of-the-box search analytics, stored queries, and caching — features which are beyond the scope of these tutorials. <a href="https://dashboard.appbase.io/signup?utm_source=blog&amp;utm_medium=tutorial&amp;utm_campaign=appbaseio">Sign up for our 14-day trial to try these out</a>!</p><p>You can deploy appbase.io with any Elasticsearch upstream cluster (Elastic Cloud, AWS OpenSearch) or with appbase.io cloud.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c6b9913e42b9" width="1" height="1" alt=""><hr><p><a href="https://medium.appbase.io/build-your-faceted-search-app-in-2-minutes-with-appbase-ios-interactive-tutorials-c6b9913e42b9">Build your faceted search app in 2 minutes with appbase.io’s interactive tutorials</a> was originally published in <a href="https://medium.appbase.io">All things #search</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Open-sourcing ABC: Import MongoDB, SQL, JSON, CSV, Firestore, Redis Data Into Elasticsearch]]></title>
            <link>https://medium.appbase.io/open-sourcing-abc-import-import-mongodb-sql-json-csv-data-into-elasticsearch-8090965c4340?source=rss----fda0e3655d6f---4</link>
            <guid isPermaLink="false">https://medium.com/p/8090965c4340</guid>
            <category><![CDATA[mongodb]]></category>
            <category><![CDATA[postgres]]></category>
            <category><![CDATA[appbase]]></category>
            <category><![CDATA[opensearch]]></category>
            <category><![CDATA[elasticsearch]]></category>
            <dc:creator><![CDATA[Siddharth Kothari]]></dc:creator>
            <pubDate>Wed, 27 Oct 2021 12:24:17 GMT</pubDate>
            <atom:updated>2021-10-27T12:30:46.527Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*g9dJIw0R8YJ9sLbA16htEA.png" /><figcaption><strong>Image:</strong> abc is a CLI tool for indexing data residing in MongoDB, Postgres, MySQL, SQLServer, JSON, and CSV formats into Elasticsearch</figcaption></figure><p>We’ve <a href="https://github.com/appbaseio/abc">open-sourced the ABC import project</a> with our latest 1.0.0 Beta Release 3. The ABC import project has been based on the <a href="https://github.com/compose/transporter">transporter project</a> from the Compose team.</p><p>We’re excited to open-source ABC 🎉:</p><ol><li>4 years since the initial release, ABC continues to be used by several of our customers / community users.</li><li>We’ve struggled to keep up with regular releases for ABC, the last release took a year! Our core focus at appbase.io going forward has on providing the best app search experience, and open-sourcing the project now allows the community to continue relying on it.</li></ol><p>Over the past years, we’ve added several new import adaptors as well as maintained support for the existing adaptors.</p><p>ABC allows importing data from these sources today:</p><ul><li><a href="https://github.com/appbaseio/abc/blob/dev/docs/importer/adaptors/csv.md">CSV</a></li><li><a href="https://github.com/appbaseio/abc/blob/dev/docs/importer/adaptors/json.md">JSON</a> / <a href="https://github.com/appbaseio/abc/blob/dev/docs/importer/adaptors/jsonl.md">JSONL</a></li><li><a href="https://github.com/appbaseio/abc/blob/dev/docs/importer/adaptors/mongodb.md">MongoDB</a></li><li><a href="https://github.com/appbaseio/abc/blob/dev/docs/importer/adaptors/elasticsearch.md">Elasticsearch</a></li><li><a href="https://github.com/appbaseio/abc/blob/dev/docs/importer/adaptors/postgres.md">Postgres</a> / <a href="https://github.com/appbaseio/abc/blob/dev/docs/importer/adaptors/mssql.md">MSSQL</a> / <a href="https://github.com/appbaseio/abc/blob/dev/docs/importer/adaptors/mysql.md">MySQL</a> / <a href="https://github.com/appbaseio/abc/blob/dev/docs/importer/adaptors/sqlite.md">SQLite</a></li><li><a href="https://github.com/appbaseio/abc/blob/dev/docs/importer/adaptors/kafka.md">Kafka</a></li><li><a href="https://github.com/appbaseio/abc/blob/dev/docs/importer/adaptors/redis.md">Redis</a></li><li><a href="https://github.com/appbaseio/abc/blob/dev/docs/importer/adaptors/firestore.md">Firestore</a></li></ul><blockquote>With this release, we have also added support for importing data to an <a href="http://Since originally releasing it ~4 years ago, we&#39;ve continuously added / maintained support for several import adaptors.">OpenSearch</a> cluster.</blockquote><h3>Key Benefits</h3><ol><li>Whether your data resides in Postgres or a JSON file or MongoDB or in all three places, <strong>abc</strong> can index the data into Elasticsearch. It is the only tool that allows working with all these sources at once or individually: csv, json, postgres, mysql, sqlserver, mongodb, elasticsearch.</li><li>It can keep the Elasticsearch index synced in realtime with the data source. <strong>Note:</strong> This is currently only supported for MongoDB and Postgres.</li><li>abc import is a single line command that allows doing all of the above. It doesn’t require any external dependencies, takes zero lines of code configuration, and runs as an isolated process with a minimal resource footprint.</li><li><strong>abc</strong> also supports configurable user-defined JS data transformations (think better ETL) for advanced uses to map data types, columns or transform the data itself before the data gets indexed into Elasticsearch.</li></ol><h4><strong>Data Transformation Examples</strong></h4><p>Using ABC, you can use data transformations to enrich, transform, or collapse data prior to importing it into Elasticsearch index.</p><ol><li><a href="https://github.com/appbaseio/abc/blob/dev/docs/importer/examples.md#importing-specific-tablescollections-from-a-database">Here’s an example</a> showing how to import data from specific tables in a database.</li><li><a href="https://github.com/appbaseio/abc/blob/dev/docs/importer/examples.md#importing-to-a-different-destination-index">Here’s an example</a> that shows how to dynamically import data to different indices.</li><li>Importing data is a process that needs to be often repeated. <a href="https://github.com/appbaseio/abc/blob/dev/docs/importer/examples.md#importing-documents-with-an-id">Here’s an example</a> showing how to index data with document IDs set from the data itself to avoid duplication of documents.</li><li><a href="https://github.com/appbaseio/abc/blob/dev/docs/importer/transform_file.md">Here’s an example</a> that shows how to set an Elasticsearch index mapping prior to starting the data import.</li></ol><p>Data transformation is primarily supported using the <a href="https://github.com/dop251/goja">goja</a> project — which allows running a JavaScript VM in Go, allowing users to define transformations in JavaScript. Some more example usages of Goja can be found over <a href="https://github.com/appbaseio/abc/blob/dev/docs/importer/transforms/goja.md">here</a>.</p><h3>Get ABC</h3><p><a href="https://github.com/appbaseio/abc/releases/latest">Download</a> the binary of v1.0.0-beta.3 release for MacOS (both ARM and AMD builds are supported), Linux or Windows. After that, put the binary in a folder of your choice. You can put it in PATH so that it can be called from anywhere. Then test the installation as</p><pre>&gt; abc version</pre><p><strong>abc</strong> is also available as a docker image.</p><pre>docker pull appbaseio/abc</pre><p>Read the following importer specific guides for ABC:</p><h4>Postgres</h4><p><a href="https://medium.appbase.io/cli-for-indexing-data-from-postgres-to-elasticsearch-6eebc5cc0f0f">CLI for Indexing data from Postgres to Elasticsearch</a></p><h4>MongoDB</h4><p><a href="https://medium.appbase.io/cli-for-indexing-data-from-mongodb-to-elasticsearch-ee5a74695945">CLI for Indexing data from MongoDB to Elasticsearch</a></p><h4>MySQL</h4><p><a href="https://medium.appbase.io/cli-for-indexing-data-from-mysql-to-elasticsearch-b59289e5025d">CLI for Indexing data from MySQL to Elasticsearch</a></p><h4>Microsoft SQL Server</h4><p><a href="https://medium.appbase.io/cli-for-indexing-data-from-mssql-to-elasticsearch-341963a054dd">CLI for Indexing data from MSSQL to Elasticsearch</a></p><h4>Elasticsearch</h4><p><a href="https://medium.appbase.io/cli-for-indexing-data-from-elasticsearch-to-elasticsearch-301c7a243c84">CLI for Indexing data from ElasticSearch to Elasticsearch</a></p><h4>JSON</h4><p><a href="https://medium.appbase.io/cli-for-indexing-data-from-json-to-elasticsearch-92f582c53df4">CLI for Indexing data from JSON to Elasticsearch</a></p><h4>CSV</h4><p><a href="https://medium.appbase.io/cli-for-indexing-data-from-csv-to-elasticsearch-17d290a5974f">CLI for Indexing data from CSV to Elasticsearch</a></p><h4>Firestore</h4><p><a href="https://medium.appbase.io/cli-for-indexing-from-firestore-to-elasticsearch-80286fc8e58b">CLI for indexing from Firestore to Elasticsearch</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8090965c4340" width="1" height="1" alt=""><hr><p><a href="https://medium.appbase.io/open-sourcing-abc-import-import-mongodb-sql-json-csv-data-into-elasticsearch-8090965c4340">Open-sourcing ABC: Import MongoDB, SQL, JSON, CSV, Firestore, Redis Data Into Elasticsearch</a> was originally published in <a href="https://medium.appbase.io">All things #search</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>