Package Data | |
---|---|
Maintainer Username: | swisnl |
Maintainer Contact: | bbrala@swis.nl (Björn Brala) |
Package Create Date: | 2016-11-07 |
Package Last Update: | 2024-11-15 |
Home Page: | |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-18 03:05:21 |
Package Statistics | |
---|---|
Total Downloads: | 80,187 |
Monthly Downloads: | 1,529 |
Daily Downloads: | 7 |
Total Stars: | 181 |
Total Watchers: | 11 |
Total Forks: | 25 |
Total Open Issues: | 5 |
This package creates a MySQL fulltext index for models and enables you to search through those.
composer require swisnl/laravel-fulltext
.php artisan vendor:publish --tag=laravel-fulltext
php artisan migrate
Only if you are on Laravel 5.4 or lower will you need to install the service provider
Swis\LaravelFulltext\FulltextServiceProvider::class,
inconfig/app.php
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.
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.
class Country extends Model
{
use \Swis\LaravelFulltext\Indexable;
protected $indexContentColumns = ['biographies.name', 'political_situation', 'elections'];
protected $indexTitleColumns = ['name', 'governmental_type'];
}
You can use a dot notitation to query relationships for the model, like biographies.name
.
You can search using the Search class.
$search = new \Swis\LaravelFulltext\Search();
$search->run('europe');
This will return a Collection of \Swis\LaravelFulltext\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.
Index all models for a certain class
php artisan laravel-fulltext:all
Usage:
laravel-fulltext:all <model_class>
Arguments:
model_class Classname of the model to index
php artisan laravel-fulltext:all \\App\\Models\\Country
Usage:
laravel-fulltext:one <model_class> <id>
Arguments:
model_class Classname of the model to index
id ID of the model to index
php artisan laravel-fulltext:one \\App\\Models\\Country 4
Results on title
or content
are weighted in the results. Search result score is multiplied by the weight in this config
Enable wildcard after words. So when searching for for example car
it will also match carbon
.
Please see CHANGELOG for more information on what has changed recently.
$ composer test
Please see CONTRIBUTING and CODE_OF_CONDUCT for details.
If you discover any security related issues, please email security@swis.nl instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.
SWIS is a web agency from Leiden, the Netherlands. We love working with open source software.