Setup Opensolr with Omeka Solr

Omeka

Omeka + Opensolr

Omeka is a web publishing platform for digital heritage collections — used by museums, libraries, archives, and scholarly projects. By connecting Omeka to Opensolr, you get powerful full-text search across your digital collections with faceted browsing, relevance scoring, and instant results.

OMEKA + OPENSOLR ARCHITECTUREOmeka SItems, media, metadataDublin Core, custom vocabsSearchSolr ModuleMaps metadata to SolrManages indexingOpensolr IndexFull-text searchFacets, relevance, speedSearch your entire digital collection instantlyDublin Core fields, item sets, media content, custom vocabularies — all searchable


Which Module to Use

Omeka Version Module Notes
Omeka S (modern) SearchSolr by Daniel-KM Recommended. No PHP Solr extension needed.
Omeka S (older) Solr by BibLibre Deprecated. Replaced by SearchSolr.
Omeka Classic SolrSearch by Scholars' Lab For legacy Omeka 2.x installations.

For new projects, use Omeka S with the SearchSolr module. It connects to Solr via HTTP (no PHP extension needed), supports facets, autocompletion, and works with any hosted Solr including Opensolr.


Setup Steps (Omeka S + SearchSolr)

Step 1: Create Your Opensolr Index

  1. Log in to your Opensolr Dashboard
  2. Create a new Opensolr Index
  3. Note your hostname, core name, and credentials

Step 2: Upload the Omeka Config Files

Download the Omeka Solr configuration archive from the SearchSolr module repository or use a default Solr config. Upload it to your Opensolr Index via the Config Files Editor.

Key config files needed:

  • schema.xml — field definitions for Omeka metadata
  • solrconfig.xml — request handlers and search components

Step 3: Install the SearchSolr Module

On your Omeka S server:

cd /path/to/omeka-s/modules
# Download and unzip the SearchSolr module
unzip SearchSolr.zip

Also install the Advanced Search module (required dependency):

unzip AdvancedSearch.zip

Then enable both modules in the Omeka S admin panel under Modules.

Step 4: Configure the Solr Connection

  1. Go to Search > Solr cores in the Omeka S admin
  2. Edit the default core or add a new one
  3. Enter your Opensolr connection details:
// In module config or via admin UI
'host' => 'your-hostname.solrcluster.com',
'port' => 443,
'path' => '/solr/your_core_name',
'secure' => true,
'user' => 'your_username',
'password' => 'your_password',
  1. Click Check to verify the connection — status should show OK

Step 5: Set Up Field Mappings

The SearchSolr module maps Omeka metadata fields to Solr fields. Default mappings are created automatically for common Dublin Core fields:

  • Title → general search + sort
  • Description → general search
  • Creator → general search + facet
  • Date → sort + facet
  • Subject → facet
  • Type → facet

You can customize these mappings to add more fields, configure facets, and set up sort options.

Step 6: Index Your Collection

  1. Go to Search > Indexes in the Omeka S admin
  2. Click the reindex button (two arrows forming a circle)
  3. Wait for indexing to complete

For large collections, indexing runs in the background.


Adding a Catch-All Search Field

For broader search results, add a copyField directive so all text fields are also searchable from one general field:

curl "https://your-host.solrcluster.com/solr/your_core/schema" \
  -u username:password \
  -H "Content-Type: application/json" \
  -d '{"add-copy-field": {"source": "*", "dest": "_text_"}}'

This lets users search across all metadata fields at once.


Quick Checklist

  • Create an Opensolr Index and upload the Omeka config files
  • Install the SearchSolr and Advanced Search modules on Omeka S
  • Configure the Solr connection (host, port 443, SSL, credentials)
  • Verify the connection shows OK status
  • Set up field mappings for your metadata vocabulary
  • Click reindex to populate the search index
  • Optionally add a copyField for catch-all search

Need help connecting Omeka to Opensolr? Reach out to us at support@opensolr.com — we help museums, libraries, and archives set up search every day.