Repository navigation
Apache Solr Output Connector
Module: oc-solr-output-connector
Class: SolrOutputConnector
Spring Bean: @Component (activated when spring.opencrawling.output.type=solr)
The Apache Solr Output Connector integrates Apache Solr (v10.x and v9.x) into the OpenCrawling pipeline as a vector search engine and hybrid search store. It delivers high-throughput vector chunk indexing, HNSW ANN search, Solr 10 quantization, dynamic REST schema auto-provisioning, zero-trust ACL security metadata, and decoupled Kafka writer execution.
graph TD
A["Crawled Document Chunk"] --> B["oc-embedding-consumer (Spring AI / Ollama)"]
B --> C["Kafka Topic (opencrawling-embedded)"]
C --> D["SolrStoreWriterConsumer (oc-solr-output-connector)"]
D --> E["SolrJ 10 HttpJdkSolrClient / CloudSolrClient"]
E --> F["Apache Solr Collection ('enterprise_kb')"]
F --> G["solr.DenseVectorField (HNSW Indexing)"]
-
Solr 10 & 9.x Support: Native integration using SolrJ 10 JDK HTTP Client (
HttpJdkSolrClientfor standalone,CloudSolrClientfor SolrCloud). -
solr.DenseVectorField& HNSW Indexing: Auto-provisions theknn_vectorfield type backed bysolr.DenseVectorFieldwith configurable HNSW graph parameters (hnswMaxConnections,hnswBeamWidth,similarityFunction). -
Solr 10 Advanced Vector Features:
-
Quantization: Supports
none(Full Precision),scalar(Scalar Quantization SQ), andbinary(Binary Quantization BQ). -
Vector Encoding: Supports
FLOAT32orBYTEencodings. -
efSearchTuning: Precision/recall tuning parameter for Solr 10 KNN search queries.
-
Quantization: Supports
-
Automatic REST Schema Auto-Provisioning:
SolrCollectionInitializerprogrammatically creates the requiredknn_vectorfield type and missing schema fields (embeddings,text,uri,acl,last_modified,security_allowed_read,security_denied_read) via Solr's Schema REST API. -
Decoupled Architecture: Features
SolrStoreWriterConsumerfor listening to the Kafkaopencrawling-embeddedtopic and asynchronously indexing vector chunks into Solr. -
Zero-Trust Security: Maps Open Ingestion Standard (OIS) ACL permission rules into Solr fields (
security_allowed_read,security_denied_read,security_inheritance_enabled).
All properties are prefixed with spring.opencrawling.output.solr.*:
| Property | Default | Description |
|---|---|---|
spring.opencrawling.output.solr.mode |
standalone |
Solr deployment mode: standalone or cloud
|
spring.opencrawling.output.solr.url |
http://localhost:8983/solr |
Base HTTP URL of standalone Solr instance |
spring.opencrawling.output.solr.zk-host |
localhost:2181 |
ZooKeeper connection string for SolrCloud mode |
spring.opencrawling.output.solr.collection |
enterprise_kb |
Target Solr collection / core name |
spring.opencrawling.output.solr.dimensions |
1024 |
Vector embedding dimension size |
spring.opencrawling.output.solr.similarity |
cosine |
Similarity metric: cosine, dot_product, or euclidean
|
spring.opencrawling.output.solr.vector-encoding |
FLOAT32 |
Solr 10 vector encoding: FLOAT32 or BYTE
|
spring.opencrawling.output.solr.quantization |
none |
Solr 10 quantization: none, scalar, or binary
|
spring.opencrawling.output.solr.hnsw-max-connections |
16 |
HNSW graph max connections ( |
spring.opencrawling.output.solr.hnsw-beam-width |
100 |
HNSW graph beam width ( |
spring.opencrawling.output.solr.ef-search |
100 |
Solr 10 efSearch query precision parameter |
spring.opencrawling.output.solr.commit-within-ms |
1000 |
Soft-commit latency limit in milliseconds |
When initialized, SolrCollectionInitializer sends the following schema payload to Solr:
{
"add-field-type": {
"name": "knn_vector",
"class": "solr.DenseVectorField",
"vectorDimension": 1024,
"similarityFunction": "cosine",
"knnAlgorithm": "hnsw",
"hnswMaxConnections": 16,
"hnswBeamWidth": 100,
"vectorEncoding": "FLOAT32"
},
"add-field": [
{ "name": "id", "type": "string", "stored": true, "indexed": true },
{ "name": "text", "type": "text_general", "stored": true, "indexed": true },
{ "name": "embeddings", "type": "knn_vector", "stored": true, "indexed": true },
{ "name": "uri", "type": "string", "stored": true, "indexed": true },
{ "name": "acl", "type": "string", "stored": true, "indexed": true },
{ "name": "security_allowed_read", "type": "string", "stored": true, "indexed": true, "multiValued": true },
{ "name": "security_denied_read", "type": "string", "stored": true, "indexed": true, "multiValued": true }
]
}curl "http://localhost:8983/solr/enterprise_kb/select?q=text:OpenCrawling&fl=id,text,uri,score"curl --data-urlencode "q={!knn f=embeddings topK=5}[0.0123,-0.0456,0.0891,...]" \
--data-urlencode "fl=id,text,uri,score" \
"http://localhost:8983/solr/enterprise_kb/select"Spin up Apache Solr using the provided Compose file:
docker compose -f oc-solr-output-connector/docker/docker-compose.yml up -dRun the automated end-to-end multi-service pipeline integration test:
./scripts/test-solr-decoupled.sh- Home
- Quick Start
- VM & Bare-Metal Distribution Installation
- Local Development & Fast Docker Builds
- User Guide
- Architecture
- Zero-Trust Security & ACL Management
- Document Lifecycle Actions & Tombstones
- Apache Tika 4 Text Extraction
- Configuration Guide
- Connectors Reference
- Alfresco Content Services (ACS) Connector
- Alfresco Process Services (APS) Connector
- Flowable Repository Connector
- Camunda Repository Connector
- OASIS CMIS Repository Connector
- Doxis Repository Connector
- M-Files Repository Connector
- SharePoint Online Repository Connector
- Hyland OpenArch Integration (Repository, Output & MCP)
- Relational Database (JDBC) Connector
- Apache StormCrawler Repository Connector
- gRPC Push Repository Connector
- Apache Solr Output Connector
- Luxir Output Connector
- Apache SeaTunnel Output Connector
- Apache Ozone Output Connector (Migration Mode)
- Connector Execution Modes
- Model Context Protocol
- Apache Ozone Claim Check Store
- Lakehouse Audit Reporting & Ledger
- AI-Powered Observability (AIOps)
- Auto-Narrativization Copilot
- Maven Connector Archetypes
- Java Client SDK
- OpenCrawling CLI
- OpenAPI Specification & Swagger UI
- gRPC Internal Transport
- Migration Guide (ManifoldCF)
- Integration Test — Decoupled Pipeline
- M-Files Integration Test
- SharePoint Online Integration Test
- Hyland OpenArch Integration Test
- Local Docker Build Test
- Secure MCP Server Integration Test
- Narrativization Integration Test
- Reporting Integration Test