An Apache Solr Query Builder for writing Solr queries. It supports parts of The standard Query Parser. More features are to be added.
There are some examples that may be useful.
This library is heavily influenced by spring-data-solr
, but adds additional functionality and Boolean Operators.
See the project's Javadoc.
The artifact is available through Maven Central via Sonatype.
<dependency>
<groupId>dev.nicklasw</groupId>
<artifactId>solr-query-builder</artifactId>
<version>0.10.0</version>
</dependency>
implementation 'dev.nicklasw:solr-query-builder:0.10.0'
Please see the changelog for a release history and indications on how to upgrade from one version to another.
If you find any problems or have suggestions about this library, please submit an issue. Moreover, any pull request, code review and feedback are welcome.
We use GitHub Actions to make sure the codebase is consistent and continuously tested (gradle check
). We try to keep
comments at a maximum of 120 characters of length and code at 120.
import static dev.nicklasw.solr.query.builder.Criteria.where;
import dev.nicklasw.solr.query.builder.parser.QueryParser;
final Criteria criteria = Criteria.where("title").expression("a title")
.and(where("quantity").between(0, 100).and(where("episodeTitle").fuzzy("a title").boost(1.5f)))
.or(where("title").regexp(".*title.*")).must()
.connect()
.or(where("title").expression("should not match").mustNot());
QueryParser.createQueryFor(criteria)
>>> +(title:a title AND (quantity:[0 TO 100] AND episodeTitle:"a title"~^1.5) OR title:/.*title.*/) OR -title:should not match