Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Search Laravel Package

minimalcode/search

Single-class PHP library for building powerful q="" query strings for Solr/Lucene. Compose and combine search criteria programmatically for clean, flexible queries in your apps; lightweight API focused on constructing Solr search expressions.

View on GitHub
Deep Wiki
Context7

PHP Solr Query Builder. Implementation of Spring Solr Data Criteria Fluent Builder

Frequently asked questions about Search
How does MinimalCode/Search compare to Laravel Scout for advanced search needs?
MinimalCode/Search is tailored for Solr/Lucene, offering deep query control like faceting and geospatial searches, while Scout abstracts cloud providers (Algolia, Meilisearch). Use Scout for simplicity or this package if you need Solr’s full power and are willing to manage the infrastructure.
Can I use this package with Laravel 9 or 10 without compatibility issues?
The package hasn’t been updated since 2017, so PHP 8.x features (e.g., named arguments) may not work out-of-the-box. Test thoroughly or fork the package to add Laravel 9+/10+ support. Consider wrapping it in a service provider to isolate potential conflicts.
What’s the easiest way to integrate this with Eloquent models?
Manually map Eloquent models to Solr documents using observers or events to sync changes. For example, trigger a Solr update when a model is saved or deleted. No native Eloquent integration exists, so a repository pattern or custom facade can help abstract the mapping logic.
Does this package support caching Solr queries for performance?
The package itself doesn’t enforce caching, but you can cache query results using Laravel’s cache or Redis. For example, cache the generated `q=` string or the full Solr response to reduce latency. This is especially useful for repeated searches with the same criteria.
What are the operational costs of using Solr with this package?
Solr requires server setup (Docker, cloud, or local instance) and ongoing maintenance like indexing, schema management, and performance tuning. The package abstracts query building but doesn’t handle infrastructure. Weigh this against alternatives like Scout or database full-text search for simpler needs.
How do I build a geospatial query with this library?
Use Solr’s geospatial syntax via the fluent API. For example, `$query->field('location')->geoDistance('37.7869, -122.4060', '10mi')` constructs a distance-based query. Ensure your Solr schema supports geospatial fields (e.g., `LocationPoint` type) and index coordinates properly.
Are there alternatives if I don’t want to manage Solr?
For Laravel, consider Scout with Algolia or Meilisearch for managed search-as-a-service, or use PostgreSQL’s `tsvector` or MySQL’s `FULLTEXT` for database-native full-text search. These avoid Solr’s operational overhead but may lack advanced features like faceting or geospatial queries.
How do I handle faceted search with this package?
Use Solr’s faceting capabilities by appending facet parameters to your query. For example, `$query->facet('category')->facet('price_range')` generates Solr facet queries. Ensure your Solr schema defines facet fields, and process the facet counts in your Laravel application logic.
Can I extend or customize the query builder for my needs?
The package is a single class, so extending it is straightforward. Override methods like `equals()`, `range()`, or `geoDistance()` to add custom logic. For example, add a `highlight()` method if you need Solr highlighting. The fluent API is designed for easy modification.
What’s the best way to test this package in a Laravel project?
Mock the Solr client in unit tests to avoid hitting a real server. Use Laravel’s HTTP testing to verify query strings or responses. Test edge cases like empty queries, special characters, or complex boolean logic. Validate PHP 8.x compatibility by testing with named arguments or union types if updated.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky