Laravel Search 拡張パッケージは、ElasticSearch、Algolia、ZendSearch などのさまざまな全文検索サービスに統合された API を提供します。
Composer を通じてこの依存関係パッケージをインストールします:
composer require mmanos/laravel-search dev-master
インストールが完了したら、config/app.php のプロバイダー配列にサービス プロバイダーを登録します:
'providers' => array( // ... Mmanos\Search\SearchServiceProvider::class,)
次に、ファサードをエイリアス配列:
'aliases' => array( // ... 'Search' => Mmanos\Search\Facade::class,)
拡張パッケージに付属する構成ファイルをアプリケーション構成ディレクトリに公開します:
php artisan vendor:publish
初回アクセス時にインデックスが存在しない場合は、自動的に作成されます。
Search::insert(1, array( 'title' => 'My title', 'content' => 'The quick brown fox...', 'status' => 'published',));
注: この ID は、レコードの削除に使用でき、また で返すこともできます。の検索結果。 。
Search::insert( "post-1", array( 'title' => 'My title', 'content' => 'The quick brown fox...', 'status' => 'published', ), array( 'created_at' => time(), 'creator_id' => 5, ));
注: 追加のパラメータにはインデックスが付けられませんが、後で取得できるようにインデックスに保存されます。
Search::delete(1);
Search::deleteIndex();
$results = Search::search('content', 'fox')->get();
$results = Search::search(array('title', 'content'), 'fox')->get();
$results = Search::search(null, 'fox')->get();
$results = Search::search('content', 'update', array('fuzzy'=>true))->get();
注: 値を渡すこともできますの間ファジーパラメータには 0 と 1 の間の値が与えられ、この値が 1 に近いほど、より類似します。フィルターは、ステートメント全体:
$results = Search::search('content', 'fox') ->where('status', 'published') ->get();注: 指定された値に複数の単語が含まれている場合、フィルターはフィールド値全体の正確な一致を保証できません。
一部のドライバーは位置ベースの検索をサポートしています:
$results = Search::search('content', 'fox') ->whereLocation(36.16781, -96.023561, 10000) ->get();上記のパラメーターはそれぞれ緯度、経度、距離 (メートル) を表します。
$results = Search::search('content', 'fox') ->where('status', 'published') ->limit(10) // Limit 10 ->get();$results = Search::search('content', 'fox') ->where('status', 'published') ->limit(10, 30) // Limit 10, offset 30 ->get();
5. 複数のインデックスの処理
複数のインデックスを処理する必要がある場合は、インデックス名を指定した後、上記のメソッドを単一のインデックスのように使用できます。 「posts」という名前のインデックスにドキュメントを追加します:
$paginator = Search::search('content', 'fox')->paginate(15);
$results = Search::select('id', 'created_at') ->search('content', 'fox') ->get();投稿から ID 1 のドキュメントを削除します:
$results = Search::select('id', 'created_at') ->where('title', 'My title') ->where('status', 'published') ->search('content', 'fox') ->search('content', 'quick') ->limit(10) ->get();
Search::search('content', 'fox')->delete();
Search::index('posts')->insert(1, array( 'title' => 'My title', 'content' => 'The quick brown fox...', 'status' => 'published',));
$results = Search::index('posts')->search('content', 'fox') ->where('status', 'published') ->get();