<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Components on Lucille</title><link>https://kmwtechnology.github.io/lucille/docs-0.5.10/architecture/components/</link><description>Recent content in Components on Lucille</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 23 Oct 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://kmwtechnology.github.io/lucille/docs-0.5.10/architecture/components/index.xml" rel="self" type="application/rss+xml"/><item><title>Document</title><link>https://kmwtechnology.github.io/lucille/docs-0.5.10/architecture/components/document/</link><pubDate>Thu, 23 Oct 2025 00:00:00 +0000</pubDate><guid>https://kmwtechnology.github.io/lucille/docs-0.5.10/architecture/components/document/</guid><description>&lt;p&gt;A Lucille &lt;em&gt;Document&lt;/em&gt; is the basic unit of data that gets sent through a pipeline and indexed.&lt;/p&gt;
&lt;p&gt;Documents are set of named fields which may contain single or list values represented in JSON. Each Document has a unique id.&lt;/p&gt;</description></item><item><title>Events</title><link>https://kmwtechnology.github.io/lucille/docs-0.5.10/architecture/components/events/</link><pubDate>Thu, 23 Oct 2025 00:00:00 +0000</pubDate><guid>https://kmwtechnology.github.io/lucille/docs-0.5.10/architecture/components/events/</guid><description>&lt;h2 id="lucille-events"&gt;Lucille Events&lt;/h2&gt;
&lt;p&gt;As a document passes through various stages of the Lucille ETL pipeline, and as the documents are handled by the indexer, Event messages are generated.&lt;/p&gt;
&lt;p&gt;Connectors listen for these events to ensure that all of the documents sent for processing are successfully processed and accounted for.&lt;/p&gt;
&lt;p&gt;Errors during processing are reported and tracked via these event messages so the connector can report back the overall success or failure of the execution.&lt;/p&gt;</description></item><item><title>Publisher</title><link>https://kmwtechnology.github.io/lucille/docs-0.5.10/architecture/components/publisher/</link><pubDate>Thu, 23 Oct 2025 00:00:00 +0000</pubDate><guid>https://kmwtechnology.github.io/lucille/docs-0.5.10/architecture/components/publisher/</guid><description>&lt;p&gt;&lt;em&gt;Publisher&lt;/em&gt; provides a way to publish documents for processing by the pipeline. When published, a Lucille document becomes available for consumption by any active pipeline Worker.&lt;/p&gt;
&lt;p&gt;The Publisher is aware of every document in the run that needs to be indexed, and determines when to end a run by reading all the specific document events.&lt;/p&gt;
&lt;p&gt;Publisher also:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Is responsible for stamping a designated &lt;code&gt;run_id&lt;/code&gt; on each published document and maintaining accounting details specific to a run.&lt;/li&gt;
&lt;li&gt;Accepts incoming events related to published documents and their children (via in-memory queue or Kafka Event Topic).&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Runner</title><link>https://kmwtechnology.github.io/lucille/docs-0.5.10/architecture/components/run/</link><pubDate>Thu, 23 Oct 2025 00:00:00 +0000</pubDate><guid>https://kmwtechnology.github.io/lucille/docs-0.5.10/architecture/components/run/</guid><description>&lt;p&gt;When you run Lucille at the command line in standalone mode, you are invoking the &lt;em&gt;Runner&lt;/em&gt;. When invoked, the runner reads the configuration file and then begins a Lucille run by launching the appropriate connector(s) and publisher. The runner generates a &lt;code&gt;runId&lt;/code&gt; per Lucille run and terminates based on messages sent by the Publisher.&lt;/p&gt;
&lt;p&gt;What the runner invokes can be thought of is an end to end &lt;em&gt;Lucille Run.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A Lucille Run is a sequence of connectors to be run, one after the other. Each connectors feeds to a specific pipeline. A run can include multiple connectors feeding multiple pipelines.&lt;/p&gt;</description></item><item><title>Worker</title><link>https://kmwtechnology.github.io/lucille/docs-0.5.10/architecture/components/worker/</link><pubDate>Thu, 23 Oct 2025 00:00:00 +0000</pubDate><guid>https://kmwtechnology.github.io/lucille/docs-0.5.10/architecture/components/worker/</guid><description/></item><item><title>File Handlers</title><link>https://kmwtechnology.github.io/lucille/docs-0.5.10/architecture/components/file_handlers/</link><pubDate>Fri, 28 Feb 2025 00:00:00 +0000</pubDate><guid>https://kmwtechnology.github.io/lucille/docs-0.5.10/architecture/components/file_handlers/</guid><description>&lt;p&gt;File Handlers accept an InputStream for processing, and return the Documents they extract in an Iterator.
The provided InputStream and any other underlying resources are closed when the Iterator returns &lt;code&gt;false&lt;/code&gt; for &lt;code&gt;hasNext()&lt;/code&gt;.
As such, when working directly with these File Handlers, it is important to exhaust the Iterators they return.&lt;/p&gt;
&lt;h3 id="file-handlers-core"&gt;File Handlers (Core)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/kmwtechnology/lucille/blob/main/lucille-core/src/main/java/com/kmwllc/lucille/core/fileHandler/CSVFileHandler.java"&gt;CSV File Handler&lt;/a&gt;: Extracts documents from a &lt;code&gt;csv&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kmwtechnology/lucille/blob/main/lucille-core/src/main/java/com/kmwllc/lucille/core/fileHandler/JSONFileHandler.java"&gt;JSON File Handler&lt;/a&gt;: Extracts documents from a &lt;code&gt;json&lt;/code&gt; (or a &lt;code&gt;jsonl&lt;/code&gt;) file.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kmwtechnology/lucille/blob/main/lucille-core/src/main/java/com/kmwllc/lucille/core/fileHandler/XMLFileHandler.java"&gt;XML File Handler&lt;/a&gt;: Extracts documents from an &lt;code&gt;xml&lt;/code&gt; file.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="custom-file-handlers"&gt;Custom File Handlers&lt;/h3&gt;
&lt;p&gt;Developers can implement and use custom File Handlers as needed. Extend &lt;code&gt;BaseFileHandler&lt;/code&gt; to get started. To use a custom
&lt;code&gt;FileHandler&lt;/code&gt;, you have to reference its &lt;code&gt;class&lt;/code&gt; in its Config. This is not needed when using the File Handlers provided by Lucille.
You can override the File Handlers provided by Lucille, as well - just include the &lt;code&gt;class&lt;/code&gt; you want to use in the Config.&lt;/p&gt;</description></item><item><title>Pipeline</title><link>https://kmwtechnology.github.io/lucille/docs-0.5.10/architecture/components/pipeline/</link><pubDate>Tue, 15 Oct 2024 00:00:00 +0000</pubDate><guid>https://kmwtechnology.github.io/lucille/docs-0.5.10/architecture/components/pipeline/</guid><description>&lt;p&gt;A &lt;em&gt;Pipeline&lt;/em&gt; refers to the complete sequence of stages that can be configured to transform documents with Lucille.&lt;/p&gt;
&lt;p&gt;In most the most common architecture, a Pipeline is fed by a Connector and emits documents to an Indexer.&lt;/p&gt;</description></item></channel></rss>