CrawlerConfig
The top-level configuration for a crawler.
Notes
The top-level crawler configuration. Controls all aspects of a crawl session including start references, fetchers, filters, depth limits, threading, checksumming, deduplication, importer settings, committers, and cluster configuration.
Usage
- YAML
- JSON
- XML
changeDiscovery: CRAWLER_SCAN
cluster:
adminDisabled: false
adminPort: 0
clustered: false
connector:
class: HazelcastClusterConnector
clusterName: string
configurer:
class: JdbcHazelcastConfigurer
instanceName: string
nodeExpiryTimeout: 0
workerHeartbeatInterval: 0
committers: []
deferredShutdownDuration: 0
documentChecksummer:
class: Md5DocumentChecksummer
combineFieldsAndContent: false
fieldMatcher:
ignoreCase: false
ignoreDiacritic: false
matchEmpty: false
method: BASIC
negateMatches: false
partial: false
pattern: string
replaceAll: false
trim: false
keep: false
onSet: APPEND
toField: string
documentDeduplicate: false
documentFetchSupport: DISABLED
documentFilters: []
eventListeners: []
fetchers: []
fetchersMaxRetries: 0
fetchersRetryDelay: 0
id: string
idleTimeout: 0
importer:
handlers: []
maxMemoryInstance: 0
maxMemoryPool: 0
responseProcessors:
- {}
tempDir: string
maxCrawlDuration: 0
maxDepth: 0
maxDocuments: 0
maxQueueBatchSize: 0
maxStreamCachePoolSize: 0
maxStreamCacheSize: 0
metadataChecksummer:
class: LastModifiedMetadataChecksummer
keep: false
onSet: APPEND
toField: string
metadataDeduplicate: false
metadataFetchSupport: DISABLED
metadataFilters: []
minProgressLoggingInterval: 0
numThreads: 0
orphansStrategy: PROCESS
postImportConsumers: []
preImportConsumers: []
referenceFilters: []
spoiledReferenceStrategizer:
class: GenericSpoiledReferenceStrategizer
fallbackStrategy: DELETE
mappings: {}
startReferences:
- string
startReferencesAsync: false
startReferencesFiles:
- string
startReferencesProviders:
- noop: string
stopOnExceptions:
- string
workDir: string
{
"changeDiscovery": "CRAWLER_SCAN",
"cluster": {
"adminDisabled": false,
"adminPort": 0,
"clustered": false,
"connector": {
"class": "HazelcastClusterConnector",
"clusterName": "string",
"configurer": {
"class": "JdbcHazelcastConfigurer"
},
"instanceName": "string",
"nodeExpiryTimeout": 0,
"workerHeartbeatInterval": 0
}
},
"committers": [],
"deferredShutdownDuration": 0,
"documentChecksummer": {
"class": "Md5DocumentChecksummer",
"combineFieldsAndContent": false,
"fieldMatcher": {
"ignoreCase": false,
"ignoreDiacritic": false,
"matchEmpty": false,
"method": "BASIC",
"negateMatches": false,
"partial": false,
"pattern": "string",
"replaceAll": false,
"trim": false
},
"keep": false,
"onSet": "APPEND",
"toField": "string"
},
"documentDeduplicate": false,
"documentFetchSupport": "DISABLED",
"documentFilters": [],
"eventListeners": [],
"fetchers": [],
"fetchersMaxRetries": 0,
"fetchersRetryDelay": 0,
"id": "string",
"idleTimeout": 0,
"importer": {
"handlers": [],
"maxMemoryInstance": 0,
"maxMemoryPool": 0,
"responseProcessors": [
{}
],
"tempDir": "string"
},
"maxCrawlDuration": 0,
"maxDepth": 0,
"maxDocuments": 0,
"maxQueueBatchSize": 0,
"maxStreamCachePoolSize": 0,
"maxStreamCacheSize": 0,
"metadataChecksummer": {
"class": "LastModifiedMetadataChecksummer",
"keep": false,
"onSet": "APPEND",
"toField": "string"
},
"metadataDeduplicate": false,
"metadataFetchSupport": "DISABLED",
"metadataFilters": [],
"minProgressLoggingInterval": 0,
"numThreads": 0,
"orphansStrategy": "PROCESS",
"postImportConsumers": [],
"preImportConsumers": [],
"referenceFilters": [],
"spoiledReferenceStrategizer": {
"class": "GenericSpoiledReferenceStrategizer",
"fallbackStrategy": "DELETE",
"mappings": {}
},
"startReferences": [
"string"
],
"startReferencesAsync": false,
"startReferencesFiles": [
"string"
],
"startReferencesProviders": [
{
"noop": "string"
}
],
"stopOnExceptions": [
"string"
],
"workDir": "string"
}
<crawler>
<changeDiscovery>CRAWLER_SCAN</changeDiscovery>
<cluster>
<adminDisabled>false</adminDisabled>
<adminPort>0</adminPort>
<clustered>false</clustered>
<connector>
<class>HazelcastClusterConnector</class>
<clusterName>string</clusterName>
<configurer/>
<instanceName>string</instanceName>
<nodeExpiryTimeout>0</nodeExpiryTimeout>
<workerHeartbeatInterval>0</workerHeartbeatInterval>
</connector>
</cluster>
<committers>
<committer/>
</committers>
<deferredShutdownDuration>0</deferredShutdownDuration>
<documentChecksummer>
<class>Md5DocumentChecksummer</class>
<combineFieldsAndContent>false</combineFieldsAndContent>
<fieldMatcher/>
<keep>false</keep>
<onSet>APPEND</onSet>
<toField>string</toField>
</documentChecksummer>
<documentDeduplicate>false</documentDeduplicate>
<documentFetchSupport>DISABLED</documentFetchSupport>
<documentFilters>
<documentFilter/>
</documentFilters>
<eventListeners>
<eventListener/>
</eventListeners>
<fetchers>
<fetcher/>
</fetchers>
<fetchersMaxRetries>0</fetchersMaxRetries>
<fetchersRetryDelay>0</fetchersRetryDelay>
<id>string</id>
<idleTimeout>0</idleTimeout>
<importer>
<handlers>
<handler/>
</handlers>
<maxMemoryInstance>0</maxMemoryInstance>
<maxMemoryPool>0</maxMemoryPool>
<responseProcessors>
<responseProcessor/>
</responseProcessors>
<tempDir>string</tempDir>
</importer>
<maxCrawlDuration>0</maxCrawlDuration>
<maxDepth>0</maxDepth>
<maxDocuments>0</maxDocuments>
<maxQueueBatchSize>0</maxQueueBatchSize>
<maxStreamCachePoolSize>0</maxStreamCachePoolSize>
<maxStreamCacheSize>0</maxStreamCacheSize>
<metadataChecksummer>
<class>LastModifiedMetadataChecksummer</class>
<keep>false</keep>
<onSet>APPEND</onSet>
<toField>string</toField>
</metadataChecksummer>
<metadataDeduplicate>false</metadataDeduplicate>
<metadataFetchSupport>DISABLED</metadataFetchSupport>
<metadataFilters>
<metadataFilter/>
</metadataFilters>
<minProgressLoggingInterval>0</minProgressLoggingInterval>
<numThreads>0</numThreads>
<orphansStrategy>PROCESS</orphansStrategy>
<postImportConsumers>
<postImportConsumer/>
</postImportConsumers>
<preImportConsumers>
<preImportConsumer/>
</preImportConsumers>
<referenceFilters>
<referenceFilter/>
</referenceFilters>
<spoiledReferenceStrategizer>
<class>GenericSpoiledReferenceStrategizer</class>
<fallbackStrategy>DELETE</fallbackStrategy>
<mappings/>
</spoiledReferenceStrategizer>
<startReferences>
<ref>string</ref>
</startReferences>
<startReferencesAsync>false</startReferencesAsync>
<startReferencesFiles>
<file>string</file>
</startReferencesFiles>
<startReferencesProviders>
<provider>
<noop>string</noop>
</provider>
</startReferencesProviders>
<stopOnExceptions>
<stopOnException>string</stopOnException>
</stopOnExceptions>
<workDir>string</workDir>
</crawler>
Properties
Property Details
changeDiscovery
Defines how the crawler discovers changes during a run. CRAWLER_SCAN (default) discovers changes by scanning source inventory and can treat missing references as orphan evidence in incremental runs. SOURCE_DELTA expects explicit source-side change/delete signals, so missing references alone are not treated as orphan evidence.
Allowed Values
CRAWLER_SCANSOURCE_DELTA
cluster
Configuration for the crawler cluster. Controls how the crawler runs across one or more nodes, including distribution of work and inter-node communication.
committers
One or more Committers responsible for sending crawled documents to their final storage destinations (e.g., search engines, databases). Documents that pass all filters and processing steps are forwarded to each configured Committer.
deferredShutdownDuration
Amount of time to defer the crawler shutdown after it finishes executing. Useful for giving external processes with polling intervals enough time to capture the latest crawler state before it shuts down. Default is zero (no delay).
documentChecksummer
Generates a checksum from a document's content to detect whether the document has changed since the last crawl. When combined with documentDeduplicate, duplicate documents within a session are also rejected. Default is MD5-based.
documentDeduplicate
Whether to enable deduplication based on document checksum. Requires a documentChecksummer to be configured. When enabled, any document with the same checksum as a previously processed document in the same crawl session is rejected. Not recommended unless document checksums are reliably unique for your content.
documentFetchSupport
Controls whether the crawler performs a full document fetch (e.g., HTTP GET). Can be DISABLED, OPTIONAL (attempts but ignores failure), or REQUIRED (rejects the document on failure). Default is REQUIRED.
Allowed Values
DISABLEDOPTIONALREQUIRED
documentFilters
Filters applied to documents after their full content has been downloaded. Documents that do not pass the filters are rejected and not sent to the Importer or Committers.
eventListeners
One or more event listeners that react to crawler lifecycle events (e.g., document fetched, crawl started, crawl completed). Useful for custom monitoring, alerting, or triggering side effects.
fetchers
One or more Fetchers responsible for obtaining documents and their metadata from the crawl source. At least one fetcher is required. If multiple fetchers are configured, they are tried in order.
fetchersMaxRetries
Maximum number of times a Fetcher will re-attempt fetching a resource upon failure. Default is zero (no retries).
fetchersRetryDelay
How long to wait before a failing Fetcher re-attempts fetching a resource, in milliseconds. Default is zero (no delay).
id
A unique identifier for this crawler. Used to distinguish crawlers within the same crawl session and in generated file names and logs. It is important for this value to be unique among all crawlers in the same session.
idleTimeout
Maximum time to wait before shutting down an idle crawler (one whose queue is empty and has no active processing). Unlike deferredShutdownDuration, new queue additions can resume processing. Useful when an external process can add references to the queue dynamically. Default is zero (does not wait).
importer
Configuration for the Norconex Importer module, which handles document content parsing, metadata extraction, and transformation before documents are sent to Committers.
maxCrawlDuration
Maximum total duration a crawler is allowed to run. Once this limit is reached, the crawler stops processing new documents. Zero or a negative value means unlimited. Default is zero (unlimited).
maxDepth
Maximum depth the crawler should explore from its start references. The definition of depth is crawler-specific (e.g., directory levels for file system crawlers, click distance from start URL for web crawlers). Default is -1 (unlimited).
maxDocuments
Maximum number of documents processed in a single crawler run before the crawler stops. If the queue still contains documents when this limit is reached, the crawl session is paused, not completed, and the next run resumes the same session.
maxQueueBatchSize
Maximum number of references a crawler node reads at once from the queue to process locally. Adjusting this value can affect throughput in clustered deployments. Default is 50.
maxStreamCachePoolSize
Maximum number of bytes used for in-memory caching of all reusable streams combined at any given time. Defaults to 1 GB. File-based caching is used when this limit is reached.
maxStreamCacheSize
Maximum number of bytes used for in-memory caching of a single reusable stream. Defaults to 100 MB. File-based caching is used when this limit is reached for a single stream, or when the pool maximum has been reached.
metadataChecksummer
Generates a checksum from a document's metadata to detect whether the metadata has changed since the last crawl. When combined with metadataDeduplicate, duplicate metadata within a session are also rejected. Metadata checksum generation is disabled when not configured.
metadataDeduplicate
Whether to enable deduplication based on metadata checksum. Requires a metadataChecksummer to be configured. When enabled, any document with the same metadata checksum as a previously processed document in the same crawl session is rejected. Not recommended unless metadata checksums are reliably unique.
metadataFetchSupport
Controls whether the crawler fetches document metadata separately before (or instead of) fetching the full document. Can be DISABLED, OPTIONAL, or REQUIRED. Default is DISABLED.
Allowed Values
DISABLEDOPTIONALREQUIRED
metadataFilters
Filters applied to documents based on their metadata, after metadata has been obtained but before the full document is fetched. Documents that do not pass the filters are rejected.
minProgressLoggingInterval
Minimum time to wait between each crawling progress log entry. A value of null or below 1 second disables progress logging. Default is 30 seconds.
numThreads
Maximum number of concurrent threads the crawler uses for processing documents. Default is 2. In clustered deployments, this value applies per node.
orphansStrategy
Determines what to do with previously crawled documents that are no longer found during the current crawl (orphans). Typical values are PROCESS, DELETE, or IGNORE.
Allowed Values
PROCESSDELETEIGNORE
postImportConsumers
A list of document consumers invoked after the document has been processed by the importer.
preImportConsumers
A list of document consumers invoked before the document is sent to the importer for content extraction and metadata enrichment.
referenceFilters
Filters applied to document references (URLs or file paths) to control which ones are fetched. Documents whose references do not pass the filters are skipped.
spoiledReferenceStrategizer
Determines how to handle references that repeatedly fail to be fetched or processed. Configures the strategy for dealing with such "spoiled" references.
startReferences
The initial set of document references (URLs or file paths) from which the crawl begins.
startReferencesAsync
When enabled, start references are provided and consumed asynchronously, allowing the crawl to begin before all start references are available.
startReferencesFiles
One or more files containing lists of start references, one reference per line.
startReferencesProviders
A list of pluggable providers that supply the initial references to crawl, used when start references come from a dynamic or external source.
stopOnExceptions
A list of fully qualified exception class names which, when encountered, will stop the crawler.
workDir
The directory where working files (temporary data, queues, state) are stored during crawl execution.