Explorer is a next-gen Elasticsearch driver for Laravel Scout with the power of Elasticsearch’s queries. It provides a compatible Scout driver, as well as additional conveniences. For example, the Explored
interface defines a mappableAs()
method for getting configuration:
1namespace App\Models; 2 3use Illuminate\Database\Eloquent\Factories\HasFactory; 4use Illuminate\Database\Eloquent\Model; 5use JeroenG\Explorer\Application\Explored; 6use Laravel\Scout\Searchable; 7 8class Post extends Model implements Explored 9{10 use HasFactory;11 use Searchable;12 13 protected $fillable = ['title', 'published'];14 15 public function mappableAs(): array16 {17 return [18 'id' => 'keyword',19 'title' => 'text',20 'published' => 'boolean',21 'created_at' => 'date',22 ];23 }24}
Then in your explorer config you can reference the model under indexes like so:
1return [2 'indexes' => [3 \App\Models\Post::class4 ],5];
Apart from the standard features you get out-of-the-box with Laravel Scout, Explorer provides a way to use query builders to write more complex queries. The advanced queries documentation has an example of using the query builder functionality with this package:
1$posts = Post::search('lorem')2 ->must(new Matching('title', 'ipsum'))3 ->should(new Terms('tags', ['featured'], 2))4 ->filter(new Term('published', true))5 ->get();
The package also provides a few commands to manage indexes and search via the CLI:
1# create indexes2php artisan elastic:create3 4# delete indexes5php artisan elastic:delete6 7# search indexes8php artisan elastic:search "App\Models\Post" lorem
0 comments:
Post a Comment
Thanks