Download the PHP package emild/laravel-fulltext without Composer
On this page you can find all versions of the php package emild/laravel-fulltext. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download emild/laravel-fulltext
More information about emild/laravel-fulltext
Files in emild/laravel-fulltext
Package laravel-fulltext
Short Description Fulltext indexing and searching for Laravel
License MIT
Homepage https://github.com/swisnl/laravel-fulltext
Informations about the package laravel-fulltext
Laravel fulltext index and search
This package creates a MySQL fulltext index for models and enables you to search through those.
Install
- Install with composer
composer require swisnl/laravel-fulltext
. - Publish migrations and config
php artisan vendor:publish --tag=laravel-fulltext
- Migrate the database
php artisan migrate
Usage
The package uses a model observer to update the index when models change. If you want to run a full index you can use the console commands.
Models
Add the Indexable
trait to the model you want to have indexed and define the columns you'd like to index as title and content.
Example
You can use a dot notitation to query relationships for the model, like biographies.name
.
Searching
You can search using the Search class.
This will return a Collection of \Swis\Laravel\Fulltext\IndexedRecord
which contain the models in the Polymorphic relation indexable
.
If you only want to search a certain model you can use $search->runForClass('europe', Country::class);
. This will only return results from that model.
Commands
laravel-fulltext:all
Index all models for a certain class
Example
php artisan laravel-fulltext:all \\App\\Models\\Country
laravel-fulltext:one
Example
php artisan laravel-fulltext:one \\App\\Models\\Country 4
Options
db_connection
Choose the database connection to use, defaults to the default database connection. When you are NOT using the default database connection, this MUST be set before running the migration to work correctly.
weight.title weight.content
Results on title
or content
are weighted in the results. Search result score is multiplied by the weight in this config
enable_wildcards
Enable wildcard after words. So when searching for for example car
it will also match carbon
.
exclude_feature_enabled
This feature excludes some rows from being returned. Enable this when you have a flag in your model which determines whether this record must be returned in search queries or not. By default this feature is disabled.
exclude_records_column_name
The column name for that property (which acts as a flag). This must match the exact column name at the table.
An example of using this feature
Think about when you have a blog and then you add this search functionality to your blogging system to search through your blog posts. Sometimes you do not want some posts to be appeared in search result, for example when a post is not published yet. This feature helps you to do it.
Change log
Please see CHANGELOG for more information on what has changed recently.
Testing
Contributing
Please see CODE_OF_CONDUCT for details.
Security
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
Credits
- Björn Brala
- All Contributors
License
The MIT License (MIT). Please see License File for more information.
SWIS
SWIS is a web agency from Leiden, the Netherlands. We love working with open source software.
All versions of laravel-fulltext with dependencies
illuminate/console Version ^6.0|^7.0|^8.0
illuminate/contracts Version ^6.0|^7.0|^8.0
illuminate/database Version ^6.0|^7.0|^8.0
illuminate/support Version ^6.0|^7.0|^8.0