<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Getting Started on Lucille</title><link>https://kmwtechnology.github.io/lucille/docs-0.9.0/getting-started/</link><description>Recent content in Getting Started on Lucille</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 31 Oct 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://kmwtechnology.github.io/lucille/docs-0.9.0/getting-started/index.xml" rel="self" type="application/rss+xml"/><item><title>Why Lucille</title><link>https://kmwtechnology.github.io/lucille/docs-0.9.0/getting-started/why-lucille/</link><pubDate>Mon, 09 Jun 2025 00:00:00 +0000</pubDate><guid>https://kmwtechnology.github.io/lucille/docs-0.9.0/getting-started/why-lucille/</guid><description>&lt;h2 id="what-lucille-does"&gt;What Lucille Does&lt;/h2&gt;
&lt;p&gt;Lucille is a Java-based framework for getting data into search engines and vector databases. It reads from source systems (databases, filesystems, APIs, Kafka topics), enriches the data through a configurable pipeline of processing stages, and delivers it to a search backend (Solr, OpenSearch, Elasticsearch, Pinecone, Weaviate) in batches.&lt;/p&gt;
&lt;p&gt;The framework handles the hard parts of production search ingestion — concurrency, completion detection, fault tolerance, batching, retry, error handling, backpressure, and testability — so that you can focus on the specifics of your data and your enrichment logic.&lt;/p&gt;</description></item><item><title>Installation</title><link>https://kmwtechnology.github.io/lucille/docs-0.9.0/getting-started/installation/</link><pubDate>Fri, 31 Oct 2025 00:00:00 +0000</pubDate><guid>https://kmwtechnology.github.io/lucille/docs-0.9.0/getting-started/installation/</guid><description>&lt;h2 id="do-you-need-to-install-lucille"&gt;Do You Need to Install Lucille?&lt;/h2&gt;
&lt;p&gt;It depends on how you&amp;rsquo;re using it:&lt;/p&gt;
&lt;h3 id="using-lucille-as-a-library-in-an-existing-java-project"&gt;Using Lucille as a Library in an Existing Java Project&lt;/h3&gt;
&lt;p&gt;If you&amp;rsquo;re embedding Lucille inside an existing Java project (e.g., calling &lt;code&gt;Runner.run()&lt;/code&gt; programmatically, or using Lucille&amp;rsquo;s Document API and Stages within your own application), you don&amp;rsquo;t need to install anything. Just add Lucille as a Maven dependency:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;dependencyManagement&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;dependencies&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;com.kmwllc&lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;lucille-bom&lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;0.9.0&lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;type&amp;gt;&lt;/span&gt;pom&lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;/type&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;scope&amp;gt;&lt;/span&gt;import&lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;/scope&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;/dependencies&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;/dependencyManagement&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;dependencies&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;com.kmwllc&lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;lucille-core&lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8f5902;font-style:italic"&gt;&amp;lt;!-- Add plugins as needed --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;com.kmwllc&lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;lucille-tika&lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;&amp;lt;/dependencies&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Lucille is published to Maven Central. The BOM ensures all Lucille modules are at the same version. No source build required.&lt;/p&gt;</description></item><item><title>Your First Pipeline</title><link>https://kmwtechnology.github.io/lucille/docs-0.9.0/getting-started/your-first-pipeline/</link><pubDate>Mon, 09 Jun 2025 00:00:00 +0000</pubDate><guid>https://kmwtechnology.github.io/lucille/docs-0.9.0/getting-started/your-first-pipeline/</guid><description>&lt;p&gt;This page walks you through creating a Lucille configuration file from scratch — a single connector reading from a CSV file, a pipeline with two stages, and an indexer writing to a local CSV output. No search backend required.&lt;/p&gt;
&lt;p&gt;By the end, you&amp;rsquo;ll understand the structure of a Lucille config and be ready to adapt it for your own data.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Lucille built from source (see &lt;a href="https://kmwtechnology.github.io/lucille/docs-0.9.0/getting-started/installation/"&gt;Installation&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;A terminal in the Lucille repository root&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="step-1-create-a-source-file"&gt;Step 1: Create a Source File&lt;/h2&gt;
&lt;p&gt;Create a file called &lt;code&gt;my-source.csv&lt;/code&gt; with a small set of classic novels:&lt;/p&gt;</description></item><item><title>Running Lucille</title><link>https://kmwtechnology.github.io/lucille/docs-0.9.0/getting-started/running-lucille/</link><pubDate>Mon, 09 Jun 2025 00:00:00 +0000</pubDate><guid>https://kmwtechnology.github.io/lucille/docs-0.9.0/getting-started/running-lucille/</guid><description>&lt;h2 id="try-the-examples"&gt;Try the Examples&lt;/h2&gt;
&lt;p&gt;Lucille&amp;rsquo;s &lt;code&gt;lucille-examples&lt;/code&gt; module contains several runnable examples:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Example&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://github.com/kmwtechnology/lucille/tree/main/lucille-examples/lucille-simple-csv-solr-example"&gt;lucille-simple-csv-solr-example&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Ingest a CSV file into Solr in local mode. A good first example.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://github.com/kmwtechnology/lucille/tree/main/lucille-examples/lucille-distributed-example"&gt;lucille-distributed-example&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Full distributed mode with Runner, Worker, Indexer, Kafka, ZooKeeper, and Solr each running in their own Docker container via Docker Compose. Includes an integration test that verifies the ingest result. Run with &lt;code&gt;mvn verify -Pnightly&lt;/code&gt; from that directory.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;To run the simple CSV example, start an instance of Apache Solr on port 8983 and create a collection called &lt;code&gt;quickstart&lt;/code&gt;. Then from &lt;code&gt;lucille-examples/lucille-simple-csv-solr-example&lt;/code&gt;, run:&lt;/p&gt;</description></item></channel></rss>