<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://docs.viglet.org/blog</id>
    <title>Viglet Blog — Enterprise Search &amp; AI</title>
    <updated>2026-06-15T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://docs.viglet.org/blog"/>
    <subtitle>Enterprise search for Adobe AEM and WordPress, semantic search, RAG, and AI agents with Viglet Turing ES.</subtitle>
    <icon>https://docs.viglet.org/img/favicon.png</icon>
    <rights>Copyright © 2026 Viglet.</rights>
    <entry>
        <title type="html"><![CDATA[Open-Source Alternatives to Algolia and Coveo for Adobe AEM]]></title>
        <id>https://docs.viglet.org/blog/open-source-alternative-to-algolia-for-aem</id>
        <link href="https://docs.viglet.org/blog/open-source-alternative-to-algolia-for-aem"/>
        <updated>2026-06-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Comparing search options for Adobe Experience Manager — Algolia, Coveo, Lucidworks, raw Solr/Elasticsearch, and the open-source Viglet Turing ES. Pricing model, data residency, facets, semantic search, and RAG.]]></summary>
        <content type="html"><![CDATA[<p>If you run <strong>Adobe Experience Manager</strong> and need a real search experience —
facets, autocomplete, relevance, and increasingly AI answers — you'll quickly
hit the limits of out-of-the-box Oak indexing and start evaluating a dedicated
search layer. The usual shortlist is <strong>Algolia</strong>, <strong>Coveo</strong>, and
<strong>Lucidworks</strong> — all excellent, all SaaS, all priced per document and per query.</p>
<p>This post lays out the trade-offs honestly, including where the open-source
option — <a href="https://www.viglet.org/turing/" target="_blank" rel="noopener noreferrer" class=""><strong>Viglet Turing ES</strong></a> — fits and where
it doesn't.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-options-at-a-glance">The options at a glance<a href="https://docs.viglet.org/blog/open-source-alternative-to-algolia-for-aem#the-options-at-a-glance" class="hash-link" aria-label="Direct link to The options at a glance" title="Direct link to The options at a glance" translate="no">​</a></h2>
<table><thead><tr><th></th><th>Pricing model</th><th>Data residency</th><th>Facets</th><th>Semantic / vector</th><th>RAG (AI answers)</th><th>AEM connector</th></tr></thead><tbody><tr><td><strong>Algolia</strong></td><td>Per record + per search (SaaS)</td><td>Algolia cloud</td><td>✅</td><td>✅ (add-on)</td><td>Partial (Ask AI)</td><td>Via integration</td></tr><tr><td><strong>Coveo</strong></td><td>Per query / seat (SaaS, enterprise)</td><td>Coveo cloud</td><td>✅</td><td>✅</td><td>✅</td><td>✅ (first-class)</td></tr><tr><td><strong>Lucidworks Fusion</strong></td><td>License + infra</td><td>Self-host / cloud</td><td>✅</td><td>✅</td><td>✅</td><td>Connector</td></tr><tr><td><strong>Raw Solr / Elasticsearch</strong></td><td>Free / infra</td><td>Self-host</td><td>✅ (DIY)</td><td>✅ (DIY)</td><td>❌ (build it)</td><td>❌ (build it)</td></tr><tr><td><strong>Viglet Turing ES</strong></td><td>Free (Apache 2.0) + optional support</td><td><strong>Your infrastructure</strong></td><td>✅ (auto from AEM tags)</td><td>✅</td><td>✅ (built-in)</td><td>✅ (<a class="" href="https://docs.viglet.org/dumont/connectors/aem">Dumont DEP</a>)</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-real-decision-axes">The real decision axes<a href="https://docs.viglet.org/blog/open-source-alternative-to-algolia-for-aem#the-real-decision-axes" class="hash-link" aria-label="Direct link to The real decision axes" title="Direct link to The real decision axes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-pricing-model--per-document-saas-vs-self-host">1. Pricing model — per-document SaaS vs. self-host<a href="https://docs.viglet.org/blog/open-source-alternative-to-algolia-for-aem#1-pricing-model--per-document-saas-vs-self-host" class="hash-link" aria-label="Direct link to 1. Pricing model — per-document SaaS vs. self-host" title="Direct link to 1. Pricing model — per-document SaaS vs. self-host" translate="no">​</a></h3>
<p>SaaS search bills scale with your <strong>content volume and query traffic</strong>. For a
large AEM repository (hundreds of thousands of pages, public traffic), that
line item grows every year. Self-hosting Turing ES on infrastructure you
already run flips it to a fixed cost — you pay for compute, not per record.</p>
<blockquote>
<p>If your content set is small and traffic is spiky, managed SaaS may genuinely
be cheaper <em>and</em> less operational work. Be honest about your scale.</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-data-residency">2. Data residency<a href="https://docs.viglet.org/blog/open-source-alternative-to-algolia-for-aem#2-data-residency" class="hash-link" aria-label="Direct link to 2. Data residency" title="Direct link to 2. Data residency" translate="no">​</a></h3>
<p>With Algolia and Coveo, your indexed content lives in <strong>their</strong> cloud. For
regulated industries — finance, healthcare, education, government — AEM author
content leaving the building is often a non-starter. Turing ES, Lucidworks, and
raw Solr/ES all index <strong>inside your perimeter</strong>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-connector-quality-the-part-everyone-underestimates">3. Connector quality (the part everyone underestimates)<a href="https://docs.viglet.org/blog/open-source-alternative-to-algolia-for-aem#3-connector-quality-the-part-everyone-underestimates" class="hash-link" aria-label="Direct link to 3. Connector quality (the part everyone underestimates)" title="Direct link to 3. Connector quality (the part everyone underestimates)" translate="no">​</a></h3>
<p>A search engine is only as good as how cleanly it ingests AEM. The hard parts:
real-time sync on publish, tags → facets, multi-language paths, author <em>and</em>
publish environments, and <strong>cascade re-indexing</strong> when a shared fragment
changes. Turing ES handles these through <a class="" href="https://docs.viglet.org/dumont/connectors/aem">Dumont DEP</a>:
OSGi event listeners, <code>infinity.json</code> traversal, automatic tag facets, and
dependency-tracked cascade re-indexing — out of the box.</p>
<p>Raw Solr/Elasticsearch give you the engine but <strong>none</strong> of this — you build the
AEM pipeline yourself, which is usually months of work.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-semantic-search--rag-without-a-second-vendor">4. Semantic search + RAG without a second vendor<a href="https://docs.viglet.org/blog/open-source-alternative-to-algolia-for-aem#4-semantic-search--rag-without-a-second-vendor" class="hash-link" aria-label="Direct link to 4. Semantic search + RAG without a second vendor" title="Direct link to 4. Semantic search + RAG without a second vendor" translate="no">​</a></h3>
<p>The 2026 reality is that "search" now includes conversational, grounded AI
answers. With SaaS you often add a separate AI tier (and a separate bill).
Turing ES bundles faceted search, <strong>vector/semantic search</strong>, and <strong>RAG</strong> with
your choice of LLM (OpenAI, Ollama, Anthropic, Gemini) in one Apache-2.0
platform — answers are grounded in your AEM content with citations, on your
own infrastructure. See the <a class="" href="https://docs.viglet.org/turing/rag">RAG guide</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="when-to-pick-which">When to pick which<a href="https://docs.viglet.org/blog/open-source-alternative-to-algolia-for-aem#when-to-pick-which" class="hash-link" aria-label="Direct link to When to pick which" title="Direct link to When to pick which" translate="no">​</a></h2>
<ul>
<li class=""><strong>Choose Algolia</strong> if you want zero-ops, your content set is modest, and
data residency isn't a constraint.</li>
<li class=""><strong>Choose Coveo</strong> if you're a large enterprise already invested in their
ecosystem and want a fully managed AEM connector with a budget to match.</li>
<li class=""><strong>Choose raw Solr/Elasticsearch</strong> if you have a search engineering team and
want maximum control — and are prepared to build the AEM pipeline.</li>
<li class=""><strong>Choose Viglet Turing ES</strong> if you want self-hosted enterprise search with a
first-class AEM connector, facets, semantic search, and RAG built in — under
an open-source license, with optional commercial support.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="try-it">Try it<a href="https://docs.viglet.org/blog/open-source-alternative-to-algolia-for-aem#try-it" class="hash-link" aria-label="Direct link to Try it" title="Direct link to Try it" translate="no">​</a></h2>
<p>Indexing AEM into Turing ES takes about 15 minutes — there's a
<a class="" href="https://docs.viglet.org/blog/enterprise-search-for-adobe-aem">step-by-step guide using the WKND reference site</a>.</p>
<ul>
<li class="">⭐ <a href="https://github.com/openviglet/turing-ce" target="_blank" rel="noopener noreferrer" class="">Turing ES on GitHub</a> (Apache 2.0)</li>
<li class="">📘 <a class="" href="https://docs.viglet.org/dumont/connectors/aem">AEM Connector docs</a></li>
<li class="">💬 <a href="https://github.com/openviglet/turing-ce/discussions" target="_blank" rel="noopener noreferrer" class="">GitHub Discussions</a></li>
</ul>
<p><em>Viglet Turing ES is open-source enterprise search with semantic navigation and
generative AI — an alternative to Algolia, Coveo, and Lucidworks for teams that
want to keep their content on their own infrastructure.</em></p>]]></content>
        <author>
            <name>Alexandre Oliveira</name>
            <uri>https://github.com/alegauss</uri>
        </author>
        <category label="Adobe AEM" term="Adobe AEM"/>
        <category label="Comparison" term="Comparison"/>
        <category label="Enterprise Search" term="Enterprise Search"/>
        <category label="Open Source" term="Open Source"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to Add Enterprise Search to Adobe AEM with Viglet Turing ES]]></title>
        <id>https://docs.viglet.org/blog/enterprise-search-for-adobe-aem</id>
        <link href="https://docs.viglet.org/blog/enterprise-search-for-adobe-aem"/>
        <updated>2026-06-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A step-by-step guide to indexing Adobe Experience Manager content into an open-source enterprise search engine with faceted navigation, semantic search, and RAG — an alternative to Algolia, Coveo, and Lucidworks.]]></summary>
        <content type="html"><![CDATA[<p>Adobe Experience Manager (AEM) ships with Oak/Lucene indexing that is excellent
for authoring and repository operations — but it was never meant to power a
public-facing <strong>search experience</strong>: faceted navigation, autocomplete,
relevance tuning, multi-language sites, and increasingly, conversational
(RAG) answers over your content.</p>
<p>Most teams reach for a SaaS layer — <strong>Algolia, Coveo, or Lucidworks</strong> — and pay
per document and per query, while their content leaves their infrastructure.
This guide shows the open-source alternative: indexing AEM into
<a href="https://www.viglet.org/turing/" target="_blank" rel="noopener noreferrer" class=""><strong>Viglet Turing ES</strong></a>, an Apache-2.0 enterprise
search platform you self-host, with semantic navigation and generative AI built in.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-youll-build">What you'll build<a href="https://docs.viglet.org/blog/enterprise-search-for-adobe-aem#what-youll-build" class="hash-link" aria-label="Direct link to What you'll build" title="Direct link to What you'll build" translate="no">​</a></h2>
<p>By the end you'll have AEM pages flowing into a Turing ES search index, with:</p>
<ul>
<li class=""><strong>Faceted search</strong> — AEM tags become filterable facets automatically</li>
<li class=""><strong>Real-time sync</strong> — pages re-index the moment they're published in AEM</li>
<li class=""><strong>A query API</strong> — REST, GraphQL, or SDK, ready for any front end</li>
<li class=""><strong>(Optional) RAG</strong> — grounded, citeable AI answers over the same content</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-architecture-in-one-picture">The architecture in one picture<a href="https://docs.viglet.org/blog/enterprise-search-for-adobe-aem#the-architecture-in-one-picture" class="hash-link" aria-label="Direct link to The architecture in one picture" title="Direct link to The architecture in one picture" translate="no">​</a></h2>
<p>Turing ES doesn't crawl AEM directly. A dedicated connector —
<a href="https://www.viglet.org/dumont/" target="_blank" rel="noopener noreferrer" class=""><strong>Viglet Dumont DEP</strong></a> — sits between them: an
OSGi bundle inside AEM emits events, and the Dumont connector fetches the
content and indexes it into Turing ES.</p>
<!-- -->
<p>Three components, each documented in full:</p>
<table><thead><tr><th>Component</th><th>Runs where</th><th>Job</th></tr></thead><tbody><tr><td><strong>AEM Event Listener</strong></td><td>Inside AEM (OSGi bundle)</td><td>Notifies the connector on publish/modify/delete</td></tr><tr><td><strong>AEM Connector Plugin</strong></td><td>Dumont DEP process</td><td>Fetches content from AEM, indexes into Turing ES</td></tr><tr><td><strong>Integration Instance</strong></td><td>Turing ES admin console</td><td>Proxy config + monitoring</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-1--run-turing-es">Step 1 — Run Turing ES<a href="https://docs.viglet.org/blog/enterprise-search-for-adobe-aem#step-1--run-turing-es" class="hash-link" aria-label="Direct link to Step 1 — Run Turing ES" title="Direct link to Step 1 — Run Turing ES" translate="no">​</a></h2>
<p>The fastest path is Docker:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> pull ghcr.io/openviglet/turing-ce:latest</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> run </span><span class="token parameter variable" style="color:#36acaa">-p</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2700</span><span class="token plain">:2700 ghcr.io/openviglet/turing-ce:latest</span><br></div></code></pre></div></div>
<p>Open <code>http://localhost:2700/console</code> and set the admin password on first run
(<code>TURING_ADMIN_PASSWORD</code> env var). Create a <strong>Semantic Navigation (SN) Site</strong> —
this is the index your AEM content will land in.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-2--configure-the-aem-source-in-dumont">Step 2 — Configure the AEM source in Dumont<a href="https://docs.viglet.org/blog/enterprise-search-for-adobe-aem#step-2--configure-the-aem-source-in-dumont" class="hash-link" aria-label="Direct link to Step 2 — Configure the AEM source in Dumont" title="Direct link to Step 2 — Configure the AEM source in Dumont" translate="no">​</a></h2>
<p>In the Turing ES admin console, go to <strong>Enterprise Search → Integration</strong> and
add an AEM instance. The key source fields:</p>
<table><thead><tr><th>Field</th><th>Example</th><th>Notes</th></tr></thead><tbody><tr><td>Endpoint</td><td><code>http://localhost:4502</code></td><td>Your AEM author or publish instance</td></tr><tr><td>Root Path</td><td><code>/content/wknd</code></td><td>Where traversal starts</td></tr><tr><td>Content Type</td><td><code>cq:Page</code></td><td>What to index</td></tr><tr><td>SN Site (Publish)</td><td><code>wknd-search</code></td><td>The Turing ES index to feed</td></tr></tbody></table>
<p>That's it for the happy path. AEM <strong>tags are converted to facets
automatically</strong> — no field mapping required.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-3--index-your-first-content">Step 3 — Index your first content<a href="https://docs.viglet.org/blog/enterprise-search-for-adobe-aem#step-3--index-your-first-content" class="hash-link" aria-label="Direct link to Step 3 — Index your first content" title="Direct link to Step 3 — Index your first content" translate="no">​</a></h2>
<p>You have three ways to trigger indexing. For a first run, call the connector
directly (the WKND reference site is perfect for testing):</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">-X</span><span class="token plain"> POST http://localhost:30130/api/v2/aem/index/WKND </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token parameter variable" style="color:#36acaa">-H</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Content-Type: application/json"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token parameter variable" style="color:#36acaa">-d</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{</span><br></div><div class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "paths": ["/content/wknd/us/en"],</span><br></div><div class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "event": "INDEXING",</span><br></div><div class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "recursive": true</span><br></div><div class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">  }'</span><br></div></code></pre></div></div>
<p>The connector calls AEM's <code>infinity.json</code> to read the full JCR node tree,
pulls <code>jcr:content.tags.json</code> for facets, traverses children, and sends each
page through the Dumont pipeline into Turing ES.</p>
<p>For <strong>large content trees</strong>, switch from tree traversal to AEM's QueryBuilder
discovery, which finds all pages in bulk and processes them in parallel:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">dumont</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">aem.querybuilder</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">aem.querybuilder.parallelism</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">10</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-4--real-time-sync-production">Step 4 — Real-time sync (production)<a href="https://docs.viglet.org/blog/enterprise-search-for-adobe-aem#step-4--real-time-sync-production" class="hash-link" aria-label="Direct link to Step 4 — Real-time sync (production)" title="Direct link to Step 4 — Real-time sync (production)" translate="no">​</a></h2>
<p>For production, install the <code>aem-server</code> OSGi bundle inside AEM. It subscribes
to AEM's replication and page events and notifies Dumont automatically:</p>
<table><thead><tr><th>AEM event</th><th>Dumont action</th></tr></thead><tbody><tr><td>Page activated (published)</td><td><code>PUBLISHING</code></td></tr><tr><td>Page deactivated</td><td><code>UNPUBLISHING</code></td></tr><tr><td>Page created / modified</td><td><code>INDEXING</code></td></tr><tr><td>DAM asset modified</td><td><code>INDEXING</code></td></tr></tbody></table>
<p>Configure the bundle in AEM's Web Console (<strong>Host</strong> = your Dumont URL,
<strong>Config Name</strong> = the source name). From then on, publishing a page in AEM
re-indexes it within seconds — no cron, no full re-crawl.</p>
<blockquote>
<p><strong>Tip — cascade re-indexing.</strong> When a shared component or experience fragment
changes, every page that references it can go stale. Turing/Dumont can track
<code>/content/*</code> dependencies and automatically re-index dependents. Enable
<code>dumont.dependencies.enabled=true</code> and run a Reindex All to populate the
dependency graph.</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-5--query-it">Step 5 — Query it<a href="https://docs.viglet.org/blog/enterprise-search-for-adobe-aem#step-5--query-it" class="hash-link" aria-label="Direct link to Step 5 — Query it" title="Direct link to Step 5 — Query it" translate="no">​</a></h2>
<p>Your AEM content is now searchable through any of these:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># REST — faceted search</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"http://localhost:2700/api/sn/wknd-search/search?q=adventure&amp;rows=10&amp;_setlocale=en_US"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># REST — autocomplete</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"http://localhost:2700/api/sn/wknd-search/ac?q=adven&amp;_setlocale=en_US"</span><br></div></code></pre></div></div>
<div class="language-typescript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-typescript codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// JavaScript / TypeScript SDK</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> TurSNSiteSearchService </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"@viglet/turing-react-sdk"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> search </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">TurSNSiteSearchService</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"http://localhost:2700"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> results </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> search</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">search</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"wknd-search"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  q</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"adventure"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> rows</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> localeRequest</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"en_US"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></div></code></pre></div></div>
<p>Or via GraphQL at <code>http://localhost:2700/graphiql</code>. The facets derived from
your AEM tags come back with the results — wire them straight into a filter panel.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-6-optional--conversational-answers-rag">Step 6 (optional) — Conversational answers (RAG)<a href="https://docs.viglet.org/blog/enterprise-search-for-adobe-aem#step-6-optional--conversational-answers-rag" class="hash-link" aria-label="Direct link to Step 6 (optional) — Conversational answers (RAG)" title="Direct link to Step 6 (optional) — Conversational answers (RAG)" translate="no">​</a></h2>
<p>Because Turing ES already holds your AEM content, turning on <strong>RAG</strong> gives you
grounded AI answers with citations — over your own content, on your own
infrastructure, with the LLM of your choice (OpenAI, Ollama, Anthropic, Gemini):</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"http://localhost:2700/api/sn/wknd-search/chat?q=What+adventures+are+available+in+the+Alps"</span><br></div></code></pre></div></div>
<p>This is the part SaaS search boxes can't match without shipping your content to
a third party.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-open-source-for-aem-search">Why open-source for AEM search?<a href="https://docs.viglet.org/blog/enterprise-search-for-adobe-aem#why-open-source-for-aem-search" class="hash-link" aria-label="Direct link to Why open-source for AEM search?" title="Direct link to Why open-source for AEM search?" translate="no">​</a></h2>
<ul>
<li class=""><strong>Your content stays in your infrastructure</strong> — no per-document SaaS pricing,
no data egress, AEM author content never leaves the building.</li>
<li class=""><strong>Tags → facets with zero mapping</strong>, real-time event-driven sync, and
cascade re-indexing for shared components.</li>
<li class=""><strong>Search + semantic + RAG in one platform</strong> under Apache 2.0 — not three
separate vendor bills.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="next-steps">Next steps<a href="https://docs.viglet.org/blog/enterprise-search-for-adobe-aem#next-steps" class="hash-link" aria-label="Direct link to Next steps" title="Direct link to Next steps" translate="no">​</a></h2>
<ul>
<li class="">📘 <a class="" href="https://docs.viglet.org/dumont/connectors/aem">AEM Connector — full reference</a> (event listeners, QueryBuilder, custom extractors)</li>
<li class="">📗 <a class="" href="https://docs.viglet.org/turing/integration-aem">Turing ES — AEM Integration</a></li>
<li class="">📙 <a class="" href="https://docs.viglet.org/turing/semantic-navigation">Semantic Navigation</a> and <a class="" href="https://docs.viglet.org/turing/rag">RAG</a> guides</li>
<li class="">⭐ <a href="https://github.com/openviglet/turing-ce" target="_blank" rel="noopener noreferrer" class="">Star Turing ES on GitHub</a> — it genuinely helps others find it</li>
<li class="">💬 <a href="https://github.com/openviglet/turing-ce/discussions" target="_blank" rel="noopener noreferrer" class="">Ask in GitHub Discussions</a></li>
</ul>
<p><em>Viglet Turing ES is open-source (Apache 2.0) enterprise search with semantic
navigation and generative AI. Self-host it, index Adobe AEM, WordPress, databases,
file systems, and web content, and own your search stack end to end.</em></p>]]></content>
        <author>
            <name>Alexandre Oliveira</name>
            <uri>https://github.com/alegauss</uri>
        </author>
        <category label="Adobe AEM" term="Adobe AEM"/>
        <category label="Enterprise Search" term="Enterprise Search"/>
        <category label="Semantic Search" term="Semantic Search"/>
        <category label="Open Source" term="Open Source"/>
    </entry>
</feed>