Code Monkey home page Code Monkey logo

laravel-fulltext's Introduction

Laravel fulltext index and search

Latest Version on Packagist Software License 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 notitation 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.

Commands

laravel-fulltext:all

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

Example

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

laravel-fulltext:one


Usage:
  laravel-fulltext:one <model_class> <id>

Arguments:
  model_class           Classname of the model to index
  id                    ID of the model to index

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.

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.

SWIS

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

laravel-fulltext's People

Contributors

barryatswisnl avatar bbrala avatar bingvanmoorsel avatar jazo avatar marijnz0r avatar prinsfrank avatar roachmech avatar vblinden avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.