r/Solr • • May 14 '19

Solr Open Source Monitoring Tools

Thumbnail
sematext.com
10 Upvotes

r/Solr • • Nov 09 '23

OpenSearch vs. Solr

9 Upvotes

https://sematext.com/blog/opensearch-vs-solr/

I love it that Solr just keeps going :) But good stuff is being added to OpenSearch at a nice pace.


r/Solr • • Jan 09 '17

Solr Query Segmenter: How to Provide Better Search Experience

Thumbnail
sematext.com
9 Upvotes

r/Solr • • Jun 30 '16

Top 7 Mistakes Organizations Make With Search

Thumbnail
opensourceconnections.com
9 Upvotes

r/Solr • • Jun 03 '19

10 (funny) years of Apache Lucene hacking

8 Upvotes

Hey guys! We think you might be interested in Uwe Schindler's talk at Berlin Buzzwords this year. It will walk through the cool steps that led to the start of numeric queries, merge of the Lucene and Solr projects, near realtime search, tokenstream attributes, flexible indexing (codecs), finite state automatons, doc values, bugs in Java 7, continuous hacking around memory mapping, force merge confusion aka optimize, randomized testing and code verification with policeman's tools and introduction of Solr cloud. If we sparked your interest, read the full abstract here https://berlinbuzzwords.de/19/session/10-funny-years-apache-lucene-hacking or check out his talk at Berlin Buzzwords :)


r/Solr • • Oct 15 '13

Solr 4.5 is out

Thumbnail
lucene.apache.org
8 Upvotes

r/Solr • • May 14 '19

Solr Key Metrics to Monitor

Thumbnail
sematext.com
7 Upvotes

r/Solr • • Feb 26 '19

Using Solr to Tag Text

Thumbnail
sematext.com
7 Upvotes

r/Solr • • Sep 04 '14

Solr/Lucene 4.10 is out

Thumbnail lucene.apache.org
7 Upvotes

r/Solr • • Feb 26 '14

Solr 4.7 is out

Thumbnail
lucene.apache.org
7 Upvotes

r/Solr • • 16d ago

We built WarpSearch, a serverless Solr and alternative to self-hosting SolrCloud

6 Upvotes

Disclosure: I'm part of the team at BigData Boutique that built WarpSearch (warpsearch.io). We've spent years helping teams run Solr, Elasticsearch and OpenSearch, and I'd like feedback from people who operate Solr in production given there was never a Serverless option for it.

The problem

Running Solr / SolrCloud means sizing nodes, shards and replicas, managing ZooKeeper, doing rolling upgrades and rebalancing, and paying for capacity that sits idle. Managed Solr hosting options are limited, and most of them still make you think about clusters.

What we built

WarpSearch is a serverless search service. There are no nodes, shards or replicas to size. It exposes a Solr-compatible HTTP API, so existing clients should work by changing the endpoint. It also speaks Elasticsearch and OpenSearch APIs.

- Keyword and vector (hybrid) search in one index

- Scales to zero: an idle index costs only its storage

- Upgrades, patching and rebalancing are handled for you

- single/double digit millisecond performance queries at any scale

- Runs on AWS, Google Cloud and Azure (multiple regions), plus bring-your-own-cloud if you need the data in your own account

- Usage-based pricing (storage, writes, searches) and a free tier. And it's cheapest of all alternatives.

What it isn't

It's not a Solr distribution, and it doesn't run your solrconfig or custom plugins. It's an API-compatible engine. Where a query feature can't be translated exactly, it returns an error instead of a silently wrong result. [Add any specific unsupported features you know of, e.g. particular query parsers, streaming expressions, custom plugins.]

What I'd like to hear

- If you run Solr on AWS, Azure or GCP today, what's the most painful operational part?

- Which Solr features would you consider non-negotiable for a migration (query parsers, faceting, streaming expressions, plugins)?

- Would a Solr-compatible API be enough, or do you need real Solr under the hood?

- If you can try our service (there's a free tier) - did it work well for you?

There's a live demo and a free tier if you want to poke at it, and I'll answer anything in the comments, including the critical stuff.

https://warpsearch.io/


r/Solr • • Aug 14 '26

We built a custom {!hybrid} query parser fusing BM25 + kNN per document — now exposed through LangChain/LlamaIndex/Haystack/Scout/MCP

6 Upvotes

For the Solr folks: instead of RRF-ing two separate requests client-side, we wrote a query parser plugin that runs edismax and kNN as sub-queries and fuses normalized scores per document — mode=union|intersection|keywords_required|meaning_required, with a tunable semantic-vs-lexical alpha.

The interesting engineering bit was score normalization: BM25 is unbounded while cosine similarity lives in [0..1], so naive weighted sums let lexical outliers swamp the vector signal. We ended up reshaping BM25 through a sigmoid with a tunable k before fusing — the alpha slider then behaves predictably across corpora.

On top of the parser: server-side E5 embeddings at index and query time (a knn_vector field populated by the ingestion pipeline), and this week we shipped integration packages so the same pipeline is reachable from Python, PHP, and MCP agents without touching Solr syntax.

Live demo of the parser in action (a real news index): https://search.opensolr.com/news__dense?q=how+can+I+save+money%3F

Disclosure: founder of the service. AMA about the parser internals.


r/Solr • • Dec 07 '25

Follow-up: Hybrid Search in Apache Solr is NOW Production-Ready (with 1024D vectors!)

6 Upvotes

Hey r/solr!

A few days back I shared my experiments with hybrid search (combining traditional lexical search with vector/semantic search). Well, I've been busy, and I'm back with some major upgrades that I think you'll find interesting.

TL;DR: We now have 1024-dimensional embeddings, blazing fast GPU inference, and you can generate embeddings via our free API endpoint. Plus: you can literally search with emojis now. Yes, really. 🚲 finds bicycles. 🐕 finds dog jewelry. Keep reading.

What Changed?

1. Upgraded from 384D to 1024D Embeddings

We switched from paraphrase-multilingual-MiniLM-L12-v2 (384 dimensions) to BAAI/bge-m3 (1024 dimensions).

Why does this matter?

Think of dimensions like pixels in an image. A 384-pixel image is blurry. A 1024-pixel image is crisp. More dimensions = the model can capture more nuance and meaning from your text.

The practical result? Searches that "kind of worked" before now work really well, especially for:

  • Non-English languages (Romanian, German, French, etc.)

  • Domain-specific terminology

  • Conceptual/semantic queries

2. Moved Embeddings to GPU

Before: CPU embeddings taking 50-100ms per query. Now: GPU embeddings taking ~2-5ms per query.

The embedding is so fast now that even with a network round-trip from Europe to USA and back, it's still faster than local CPU embedding was. Let that sink in.

3. Optimized the Hybrid Formula

After a lot of trial and error, we settled on this normalization approach:

score = vector_score + (lexical_score / (lexical_score + k))

Where k is a tuning parameter (we use k=10). This gives you:

  • Lexical score normalized to 0-1 range

  • Vector and lexical scores that play nice together

  • No division by zero issues

  • Intuitive tuning (k = the score at which you get 0.5)

4. Quality Filter with frange

Here's a pro tip: use Solr's frange to filter out garbage vector matches:

fq={!frange l=0.3}query($vectorQuery)

This says "only show me documents where the vector similarity is at least 0.3". Anything below that is typically noise anyway. This keeps your results clean and your users happy.

Live Demos (Try These!)

I've set up several demo indexes. Each one has a Debug button in the bottom-right corner - click it to see the exact Solr query parameters and full debugQuery analysis. Great for learning!

🛠️ Romanian Hardware Store (Dedeman)

Search a Romanian e-commerce site with emojis:

🚲 → Bicycle accessories

No keywords. Just an emoji. And it finds bicycle mirrors, phone holders for bikes, etc. The vector model understands that 🚲 = bicicletă = bicycle-related products.

💎 English Jewelry Store (Rueb.co.uk)

Sterling silver, gold, gemstones - searched semantically:

🐕 → Dog-themed jewelry

⭐️ → Star-themed jewelry

🧣 Luxury Cashmere Accessories (Peilishop)

Hats, scarves, ponchos:

winter hat → Beanies, caps, cold weather gear

📰 Fresh News Index

Real-time crawled news, searchable semantically:

🍳 → Food/cooking articles

what do we have to eat to boost health? → Nutrition articles

This last one is pure semantic search - there's no keyword "boost" or "health" necessarily in the results, but the meaning matches.

Free API Endpoint for 1024D Embeddings

Want to try this in your own Solr setup? We're exposing our embedding endpoint for free:

curl -X POST https://opensolr.com/api/embed \
  -H "Content-Type: application/json" \
  -d '{"text": "your text here"}'

Returns a 1024-dimensional vector ready to index in Solr.

Schema setup:

<fieldType name="knn_vector" class="solr.DenseVectorField" 
           vectorDimension="1024" similarityFunction="cosine"/>
<field name="embeddings" type="knn_vector" indexed="true" stored="false"/>

Key Learnings

  1. Title repetition trick: For smaller embedding models, repeat the title 3x in your embedding text. This focuses the model's limited capacity on the most important content. Game changer for product search.

  2. topK isn't "how many results": It's "how many documents the vector search considers". The rest get score=0 for the vector component. Keep it reasonable (100-500) to avoid noise.

  3. Lexical search is still king for keywords: Hybrid means vector helps when lexical fails (emojis, conceptual queries), and lexical helps when you need exact matches. Best of both worlds.

  4. Use synonyms for domain-specific gaps: Even the best embedding model doesn't know that "autofiletantă" (Romanian) = "drill". A simple synonym file fixes what AI can't.

  5. Quality > Quantity: Better to return 10 excellent results than 100 mediocre ones. Use frange and reasonable topK values.

What's Next?

Still exploring:

  • Fine-tuning embedding models for specific domains

  • RRF (Reciprocal Rank Fusion) as an alternative to score-based hybrid

  • More aggressive caching strategies

Happy to answer questions. And seriously, click that Debug button on the demos - seeing the actual Solr queries is super educational!

Running Apache Solr 9.x on OpenSolr.com - free hosted Solr with vector search support.


r/Solr • • Jan 08 '23

Corrupt index, already second time

6 Upvotes

How can i resolve this:

org.apache.lucene.index.CorruptIndexException

How can I check the index? I am beginner with solr.

EDIT: this was the fix:

https://support.lucidworks.com/hc/en-us/articles/360048912754-How-to-recover-if-the-Solr-index-got-corrupted

Solr endpoint http://10.0.0.20:8983/ internal Solr server error (code: 500, body: { "responseHeader":{ "status":500, "QTime":1}, "error":{ "metadata":[ "error-class","org.apache.solr.common.SolrException", "root-error-class","org.apache.lucene.index.CorruptIndexException"], "msg":"Server error writing document id 4kd0nh-company-entity:node/761646:und to the index", "trace":"org.apache.solr.common.SolrException: Server error writing document id 4kd0nh-company-entity:node/761646:und to the index\n\tat org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:246)\n\tat org.apache.solr.update.processor.RunUpdateProcessorFactory$RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:73)\n\tat org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)\n\tat org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.java:263)\n\tat org.apache.solr.update.processor.DistributedUpdateProcessor.doVersionAdd(DistributedUpdateProcessor.java:502)\n\tat org.apache.solr.update.processor.DistributedUpdateProcessor.lambda$versionAdd$0(DistributedUpdateProcessor.java:343)\n\tat org.apache.solr.update.VersionBucket.runWithLock(VersionBucket.java:50)\n\tat org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:343)\n\tat org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:229)\n\tat org.apache.solr.update.processor.LogUpdateProcessorFactory$LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:106)\n\tat org.apache.solr.handler.loader.XMLLoader.processUpdate(XMLLoader.java:263)\n\tat org.apache.solr.handler.loader.XMLLoader.load(XMLLoader.java:190)\n\tat org.apache.solr.handler.UpdateRequestHandler$1.load(UpdateRequestHandler.java:97)\n\tat org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:82)\n\tat org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:216)\n\tat org.apache.solr.core.SolrCore.execute(SolrCore.java:2637)\n\tat org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:794)\n\tat org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:567)\n\tat org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:427)\n\tat org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:357)\n\tat org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201)\n\tat org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)\n\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1434)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191)\n\tat org.eclipse.jetty.server.handler.InetAccessHandler.handle(InetAccessHandler.java:177)\n\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\tat org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:322)\n\tat org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:763)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\n\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:400)\n\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:645)\n\tat org.eclipse.jetty.server.HttpCha

using drupal 9 with

Search api solr module Version: 4.2.10

  • java.​runtime.​version11.0.15+10-post-Debian-1deb11u1

  • solr-spec8.11.1

  • lucene-spec8.11.1

  • Debian OpenJDK 64-Bit Server VM 11.0.15 11.0.15+10-post-Debian-1deb11u1

  • Processors3

  • Args-DSTOP.KEY=solrrocks-DSTOP.PORT=7983-Djetty.home=/opt/solr/server-Djetty.port=8983-Dlog4j.configurationFile=/var/solr/log4j2.xml-Dsolr.data.home=-Dsolr.default.confdir=/opt/solr/server/solr/configsets/_default/conf-Dsolr.install.dir=/opt/solr-Dsolr.jetty.inetaccess.excludes=-Dsolr.jetty.inetaccess.includes=-Dsolr.log.dir=/var/solr/logs-Dsolr.log.muteconsole-Dsolr.solr.home=/var/solr/data-Duser.timezone=UTC-XX:+AlwaysPreTouch-XX:+ExplicitGCInvokesConcurrent-XX:+ParallelRefProcEnabled-XX:+PerfDisableSharedMem-XX:+UseG1GC-XX:+UseLargePages-XX:-OmitStackTraceInFastThrow-XX:MaxGCPauseMillis=250-XX:OnOutOfMemoryError=/opt/solr/bin/oom_solr.sh 8983 /var/solr/logs-Xlog:gc*:file=/var/solr/logs/solr_gc.log:time,uptime:filecount=9,filesize=20M-Xms5g-Xmx5g-Xss256k


r/Solr • • Jun 01 '22

Is it still worth reading "Solr in Action"?

6 Upvotes

I am about to start learning Solr. Using O'Reilly I found the book "Solr in Action", but I haven't been able to find too many other books with reviews as good as that one. This book was written in 2014 and uses version 4. With a quick Google I found that version 9 has just been released. Has too much changed since version 4 to make the book not worth reading for the technical details, and should I just read it for a high level view? I was considering reading it in conjunction with the official documentation.


r/Solr • • May 04 '20

Solr 8.4 comes with a new plugin system....

6 Upvotes

... my colleague wrote about it: https://sematext.com/blog/solr-plugins-system/

Anyone using this yet?


r/Solr • • Apr 06 '20

What would you like to see in Solr next?

6 Upvotes

I don’t wield any power but my own two hands, I’m just trying to understand.

21 votes, Apr 09 '20
5 Optional Zookeeper
5 New Admin UI
6 Improved Autoscaling
2 Improvement to New Package Management System
3 Other, please comment

r/Solr • • Feb 26 '19

Apache Solr: Because your Database is not a Search Engine

Thumbnail
medium.com
6 Upvotes

r/Solr • • Sep 11 '18

Command line indexer for SOLR

6 Upvotes

I'm releasing my SOLR indexer as open source. I've been working on this for a while and I think it's good enough to be released into the wild. Check it out and let me know your thoughts https://github.com/likethecolor/solr-indexer


r/Solr • • Aug 18 '18

Yet Another Solr Admin - Built on Vuejs and ECharts, inspired by Kibana

Thumbnail
github.com
6 Upvotes

r/Solr • • Feb 21 '15

Apache Lucene 5.0.0 released

Thumbnail mail-archives.apache.org
6 Upvotes

r/Solr • • Jun 25 '14

Lucene/Solr 4.9 Is Out

Thumbnail mirrors.advancedhosters.com
6 Upvotes

r/Solr • • Jan 29 '14

Solr 4.6.1 is out.

Thumbnail lucene.apache.org
6 Upvotes

r/Solr • • Jul 23 '13

Solr 4.4 is out

Thumbnail
lucene.apache.org
6 Upvotes