• Stars
    star
    181
  • Rank 206,391 (Top 5 %)
  • Language
    PHP
  • License
    MIT License
  • Created over 7 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Fulltext indexing and searching for Laravel

Laravel fulltext index and search

Latest Version on Packagist Software License Buy us a tree Build Status Total Downloads Made by SWIS

This package creates a MySQL fulltext index for models and enables you to search through those.

Install

  1. Install with composer composer require swisnl/laravel-fulltext
  2. Publish migrations and config php artisan vendor:publish --tag=laravel-fulltext
  3. 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

class Country extends Model
{

    use \Swis\Laravel\Fulltext\Indexable;

    protected $indexContentColumns = ['biographies.name', 'political_situation', 'elections'];
    protected $indexTitleColumns = ['name', 'governmental_type'];

}

You can use a dot notation to query relationships for the model, like biographies.name.

Searching

You can search using the Search class.

$search = new \Swis\Laravel\Fulltext\Search();
$search->run('europe');

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.

Artisan Commands

laravel-fulltext:all

Index all models for a certain class.

php artisan laravel-fulltext:all \\App\\Models\\Country

laravel-fulltext:one

Index a single model of a certain class.

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 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

If you have a blog and then added this search functionality to your blog to search through your blog posts. Sometimes you do not want some posts to appear in the 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

composer test

Contributing

Please see CONTRIBUTING and CODE_OF_CONDUCT for details.

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

This package is Treeware. If you use it in production, then we ask that you buy the world a tree to thank us for our work. By contributing to the Treeware forest you’ll be creating employment for local families and restoring wildlife habitats.

SWIS ❤️ Open Source

SWIS is a web agency from Leiden, the Netherlands. We love working with open source software.

More Repositories

1

jQuery-contextMenu

jQuery contextMenu plugin & polyfill
HTML
2,239
star
2

json-api-client

A PHP package for mapping remote {json:api} resources to Eloquent like models and collections.
PHP
202
star
3

json-api-server

Set up a JSON API in Laravel in just a few minutes.
PHP
105
star
4

laravel-nova-mirror

Automatically update a git repository with Laravel Nova releases
PHP
76
star
5

vagrant-remove-old-box-versions

Vagrant plugin to check your downloaded boxes and remove every box that is not the lastest downloaded version
Ruby
75
star
6

vue-cli-plugin-svg-sprite

vue-cli 3 plugin to build an SVG sprite
JavaScript
70
star
7

php7-upgrade-tools

A set of tools for upgrading applications to PHP 7
23
star
8

geocoder-php-nationaal-georegister-provider

Nationaal Georegister provider for Geocoder PHP
PHP
21
star
9

filament-backgrounds

Beautiful backgrounds for Filament auth pages
PHP
21
star
10

laravel-graylog2

Log your Laravel application errors to Graylog2
PHP
20
star
11

laravel-mix-svg-sprite

SVG sprite component for Laravel Mix
JavaScript
17
star
12

textsnippet

Create a snippet of text highlighting a given string
PHP
14
star
13

gists

Gists from @swisnl
PHP
12
star
14

nuxt-lucide-icons

This Nuxt module makes working with Lucide icons a breeze!
TypeScript
10
star
15

php-http-fixture-client

Fixture client for PHP-HTTP
PHP
8
star
16

game-of-tests-laravel

Laravel package for a Game of Tests
PHP
7
star
17

game-of-tests

Some classes to parse git repositories in search for tests, gives a list of tests with their owner to create a ranking of tests written.
PHP
7
star
18

sass-rhythm

Helper function for maintaining rhythm in your css
SCSS
6
star
19

json-api-client-laravel

A PHP package for mapping remote {json:api} resources to Eloquent like models and collections.
PHP
6
star
20

build-size

Parse and compare build size
JavaScript
4
star
21

laravel-javascript-data-response

JavaScript data response macro for Laravel
PHP
4
star
22

pdfcrowd-client

A client for the pdfcrowd.com API. Includes a Laravel service provider.
PHP
3
star
23

laravel-static-request-cache

Cache static responses based on content-type to static files.
PHP
3
star
24

laravel-mautic

Laravel wrapper for Mautic API
PHP
3
star
25

game-of-tests-laravel-demo

Game of Tests demo site
PHP
2
star
26

omnipay-redsys

RedSys driver for the Omnipay PHP payment processing library
PHP
2
star
27

sass-custom-box

BEM-compatible SASS mixins for styling radioboxes and checkboxes
SCSS
1
star
28

php-cs-fixer-bitbucket

PHP CS Fixer Bitbucket reporter
PHP
1
star
29

flysystem-encrypted

Flysystem Adapter Encryption Decorator
PHP
1
star
30

leiduhfy

Jouw website op z'n leids op 3 oktober
JavaScript
1
star
31

pdok-geodatastore-api

A client for the PDOK Geodatastore API.
PHP
1
star
32

laravel-lti-provider

Laravel LTI provider
PHP
1
star
33

phpstan-faker

PHP
1
star
34

phpcs-bitbucket

PHP_CodeSniffer Bitbucket reporter
PHP
1
star
35

laravel-psr-http-client-bridge

Laravel PSR-18 HTTP Client Bridge
PHP
1
star
36

guzzle-fixture-handler

Fixture handler for Guzzle 6+
PHP
1
star
37

phpmd-bitbucket

PHPMD Bitbucket renderer
PHP
1
star