Opensolr Changelog

Recent updates and improvements to the Opensolr platform.

Apr 2026 ×

Drupal Module Apr 24, 2026

WordPress Plugin Apr 24, 2026

  • Fix WordPress Plugin Fix: Sanitize Callback No Longer Strips Saved Facet Mappings
    Facet Mapping saves persist correctly. A legacy sanitize callback in the WordPress plugin was silently stripping every saved row under the sanitize_option_opensolr_settings filter — saves looked successful but the data never made it to the database. Fixed: the callback now handles the new rich mapping shape AND auto-promotes any legacy rows on first save.

Facet Mapping Apr 24, 2026

  • Fix Image and File Facet Mappings Now Emit Real URLs Instead of Attachment IDs
    Image and File field mappings now emit a real URL instead of the bare attachment ID. Mapping a Drupal field_image or a WordPress meta that stores an attachment ID (ACF image field with Return Format = ID, _thumbnail_id, custom image_attachment_id) now resolves to a working public URL. Guarded against numeric SKU/price fields being silently rewritten.
  • Fix Multi-Valued Facet Mappings Fixed: Crawler and Ingestion Now Produce Identical Documents
    Multi-valued field mappings work correctly end-to-end. Drupal taxonomy terms, ACF Checkbox/Select-multiple/Relationship/Gallery arrays, and WooCommerce attributes (all stored differently — multi-row vs serialized-array) now all emit as one <meta property="opensolr:X_sm"> tag per value. The Web Crawler aggregates repeated tags into a Solr array, matching what real-time ingestion already writes — so crawler and ingestion produce identical documents.
  • New Facet Mapping: All WordPress Post Columns, Postmeta Keys and WooCommerce Taxonomies Mappable
    Every indexable WordPress source is now mappable — core post columns (post_title, post_content, post_excerpt, post_date, post_author, …), ALL postmeta keys (the underscore-prefixed WooCommerce core fields like _price, _sku, _stock, _thumbnail_id are now visible — previously hidden as "private"), every public taxonomy, all WooCommerce pa_* attribute taxonomies, plus synthetic featured_image_url and gallery_image_urls aggregates.
  • Improved Facet Mapping Auto-Detects Solr Field Types on Drupal and WordPress
    Facet Mapping got a big UX upgrade on both platforms. Pick a Drupal/WordPress field and the Solr Type dropdown auto-fills with the detected suffix — _s for a plain string field, _sm for a multi-valued taxonomy, _f for a WooCommerce price, _dt for a date field. Every entry in the field dropdown shows its detected type inline (post_tag — multi, string; _price — single, float) so you know before you click.

Drupal Module Apr 24, 2026

WordPress Plugin Apr 24, 2026

Search Apr 22, 2026

  • Fix Search Page Fix: showPicker SecurityError in Cross-Origin Iframes Silently Handled
    Fixed a JavaScript SecurityError thrown when the Opensolr search page is embedded inside a cross-origin iframe. Browsers block showPicker() calls from cross-origin frames; the call is now wrapped in a try/catch so the browser restriction is silently handled instead of surfacing as an uncaught exception that could disrupt other search functionality on the host page.
  • Fix Four Search Parameter Fixes: Wildcard Highlighting, hl.q, Stats and Currency Facets
    Fixed four search parameter bugs across all platforms. (1) Wildcard searches (*:*) no longer send any highlighting parameters to Solr — highlighting on a catch-all query is meaningless and wastes server cycles. (2) The Solr highlight query (hl.q) was incorrectly set to *:* instead of the real search terms, so highlighted snippets never matched actual keywords. (3) A hardcoded stats=true / stats.field=price_f block was attached to every query even for non-commerce indexes. (4) currency_s was hardcoded into the facet field list regardless of whether the index has that field. All four are fixed in Opensolr, the Drupal module, and the WordPress plugin.
  • Improved Locale Facet Shows Flags and Language Names Across Opensolr Search, Drupal and WordPress
    Locale facet — flags and readable names throughout the search UI. The Locale sidebar facet now shows flag emojis and language names instead of raw locale codes: hr_hr becomes 🇭🇷 Croatian, sr_sr becomes 🇷🇸 Serbian, and so on. The top-right All Locales selector panel also displays the correct country flag beside each language group. Active locale filters — whether applied from the sidebar facet or the top-right panel — appear as removable pills labelled with flag and name. Languages without a canonical country flag (e.g. Latin, constructed codes) show a 🌐 globe icon. Applied across the Opensolr search page, Drupal module, and WordPress plugin.

Admin Apr 22, 2026

  • Improved Web Crawler Control Buttons Aligned in a Uniform Two-Column Grid
    WebCrawler — control buttons (Start/Stop Schedule, Reindex All, Reindex From Scratch, Stop Crawl, Pause/Resume, Flush to Solr) are now equal width and arranged in a clean two-column grid. Previously they were free-flowing flex items at varying widths; the container is now a two-column CSS grid so each button occupies a uniform cell.
  • Improved Index Settings: All Five Search Mode Options Now Fit on a Single Row
    Index Settings — Search Mode radio buttons now sit on a single row. Previously the five options (Union, KW Required, Meaning Req., Intersection, Lexical Only) broke across two rows with the last one orphaned; the grid was widened from 4 to 5 columns so all five fit neatly side by side.

WordPress Apr 22, 2026

  • New Opensolr Search for WordPress 1.0.7 Adds the Lexical Only Search Mode
    Opensolr Search for WordPress 1.0.7 — adds the Lexical Only search mode, matching the Opensolr admin and Drupal module. Explicit opt-out from vector: no embedding API call is made, search runs through the lexical edismax path. The Minimum Relevance Score slider auto-zeroes the moment the radio is picked (backend enforces this on save and at query time as well). Yellow note in Search Mode explains the coupling.

Drupal Apr 22, 2026

  • New Opensolr Search for Drupal 3.5.0 Adds the Lexical Only Search Mode
    Opensolr Search for Drupal 3.5.0 — adds the Lexical Only search mode, matching the option in the Opensolr admin. Skips the embedding request entirely and runs pure lexical search. When selected, the Minimum Relevance Score is auto-zeroed (on save and at query time) so results aren't filtered out by a hybrid-calibrated threshold. Same feature across the stack — Opensolr admin, Drupal module, WordPress plugin.

Search Apr 22, 2026

  • New New Lexical Only Search Mode Skips Embeddings for Pure BM25 Ranking
    New Lexical Only search mode in Search Tuning → Search Mode. Explicit opt-out from vector — no embedding API call is made, search runs straight through the lexical edismax path. Useful for deterministic BM25 ranking, avoiding embedding API latency, or users on plans without vector who want explicit control instead of the implicit server-side fallback. When selected, the Minimum Relevance Score slider auto-zeros itself (that threshold is calibrated for the combined hybrid score; a positive value would filter out every result in pure lexical mode) and a yellow note explains the coupling.

WordPress Apr 21, 2026

Drupal Apr 21, 2026

Search Apr 21, 2026

  • Fix Custom Minimum Match Values No Longer Truncated by the XSS Filter
    Fixed custom Minimum Match values not saving. Values containing the less-than character (e.g. 2<95% 5<90% 8<80%) were silently truncated to just the first number because the global XSS filter stripped the < before the value reached the save handler. The tuning form now reads the raw request body for this field — custom mm presets save and apply correctly.
  • Improved Search Page Pagination Moved Into the Results Column, Top Block Removed
    Search page pagination layout cleaned up — pagination is now rendered inside the results column instead of drifting to the left under the facet sidebar, and the redundant top pagination block (which appeared next to the "Did you mean" spellcheck line) has been removed. Pagination now lives only at the bottom of the results, aligned with the rest of the content.
  • New Search Operators Help Panel: Phrase Match, Required, and Excluded Terms
    New Search Operators help button next to the Search bar. Opens a panel explaining "phrase match", +required, and -excluded operators with examples and a note on why they matter in hybrid search. Users can now refine queries like +laptop "13 inch" -refurbished and cut through semantic noise instantly.
  • New New Minimum Relevance Score Slider Filters Low-Scoring Hybrid Search Hits
    New Minimum Relevance Score slider in Search Tuning. Drops hits whose combined lexical + vector score falls below the threshold, cleaning noise out of facet counts and result totals. Essential for hybrid search on catalog-style content — without it, numFound balloons to the entire filter set and facet counts pick up docs the user would never consider relevant. Slider moves in 0.1 increments, default 0.3, 0 disables.

Analytics Apr 21, 2026

  • New Query Analytics: Export Every Dashboard Table to CSV
    Export CSV from Query Analytics — every table in the Analytics Dashboard (Popular Queries, Latest Queries, Path Distribution, Queries Over Time, Per-Server Stats) now has a green Export CSV button. Downloads are UTF-8 BOM-encoded for Excel compatibility, and the Latest Queries export respects your active filters (search, HTTP status, IP address).
  • Improved Faster Query Analytics: 30-Minute Caching and 30-Day Default Query Window
    Faster Query Analytics — Popular Queries, Latest Queries, Path Distribution and Per-Server metrics now load noticeably faster across the dashboard. Historical analytics results are cached for 30 minutes (up from 5), single-hit noise is filtered out of "popular" results, and the default window for Popular/Latest Queries was expanded from 10 to 30 days so you get more context out of the box.

WordPress Apr 10, 2026

Drupal Apr 10, 2026

Search Apr 10, 2026

  • Improved Hybrid Search Relevance: Lexical Field Boosts Zeroed in Vector Mode
    Improved hybrid search relevance — in vector hybrid mode, lexical field weight boosts are now automatically zeroed out so that semantic similarity drives the relevance ranking. Previously, even small lexical boosts could inflate scores well above the 0-1 vector range, pushing semantically relevant results down. Field weights still apply when search falls back to pure lexical mode.

WordPress Apr 9, 2026

Data Ingestion Apr 9, 2026

Search Apr 9, 2026

Data Ingestion Apr 9, 2026

Drupal Apr 9, 2026

Search Apr 9, 2026

Data Ingestion Apr 9, 2026

Documentation Apr 9, 2026

WordPress Apr 9, 2026

Drupal Apr 4, 2026

Search Apr 4, 2026

Drupal Apr 4, 2026

Web Crawler Apr 4, 2026

Search Apr 4, 2026

Website Apr 3, 2026

Web Crawler Apr 3, 2026

Control Panel Apr 3, 2026

Performance & SEO Apr 3, 2026

API Apr 3, 2026

Search Apr 3, 2026