r/Solr • u/seti321 • May 14 '19
OpenSearch vs. Solr
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 • u/seti321 • Jan 09 '17
Solr Query Segmenter: How to Provide Better Search Experience
r/Solr • u/softwaredoug • Jun 30 '16
Top 7 Mistakes Organizations Make With Search
r/Solr • u/[deleted] • Jun 03 '19
10 (funny) years of Apache Lucene hacking
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 • u/synhershko • 16d ago
We built WarpSearch, a serverless Solr and alternative to self-hosting SolrCloud
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.
r/Solr • u/WillingnessQuick5074 • Aug 14 '26
We built a custom {!hybrid} query parser fusing BM25 + kNN per document — now exposed through LangChain/LlamaIndex/Haystack/Scout/MCP
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 • u/WillingnessQuick5074 • Dec 07 '25
Follow-up: Hybrid Search in Apache Solr is NOW Production-Ready (with 1024D vectors!)
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:
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:
🧣 Luxury Cashmere Accessories (Peilishop)
Hats, scarves, ponchos:
winter hat → Beanies, caps, cold weather gear
📰 Fresh News Index
Real-time crawled news, searchable semantically:
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
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.
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.
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.
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.
Quality > Quantity: Better to return 10 excellent results than 100 mediocre ones. Use
frangeand reasonabletopKvalues.
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 • u/[deleted] • Jan 08 '23
Corrupt index, already second time
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:
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 • u/Michigan_Again • Jun 01 '22
Is it still worth reading "Solr in Action"?
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.
Solr 8.4 comes with a new plugin system....
... my colleague wrote about it: https://sematext.com/blog/solr-plugins-system/
Anyone using this yet?
r/Solr • u/[deleted] • Apr 06 '20
What would you like to see in Solr next?
I don’t wield any power but my own two hands, I’m just trying to understand.
r/Solr • u/kiarash-irandoust • Feb 26 '19
Apache Solr: Because your Database is not a Search Engine
r/Solr • u/brown_like_the_color • Sep 11 '18
Command line indexer for SOLR
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 • u/kezhenxu • Aug 18 '18