adonisjs scout
1.0.0
Adonis Scout は、Laravel Scout および Scout Elasticsearch Driver から大きく影響を受けた、Lucid モデルを検索するためのドライバーベースのソリューションを提供します。
npm または Yarn を使用してパッケージをインストールします。
npm -i @brainnit/adonisjs-scout
# or
yarn add @brainnit/adonisjs-scout
start/app.js
にあるサービス プロバイダーのリストに Scout を追加します。
const providers = [
// ...
'@brainnit/adonisjs-scout/providers/ScoutProvider' ,
'@brainnit/adonisjs-scout/providers/IndexKeeperProvider'
] ;
config/index.js
アプリの構成フォルダーにコピーし、 scout.js
名前を付けます。環境変数を設定することを忘れないでください。
使用する検索エンジン ドライバーによっては、追加の依存関係をインストールする必要がある場合もあります。たとえば、Elasticsearch を使用するには、次のものが必要です。
npm i --save elasticsearch bodybuilder
# or
yarn add elasticsearch bodybuilder
@provider:Searchable
トレイトをモデルに追加し、デフォルトの動作を変更するためにオーバーライドするメソッドのみを定義します。
/** @type {typeof import('@adonisjs/lucid/src/Lucid/Model')} */
const Model = use ( 'Model' ) ;
class User extends Model {
static get traits ( ) {
return [ '@provider:Searchable' ]
}
}
module . exports = Users
その後、最初の IndexKeeper を作成し、次のコマンドを実行してアプリケーションのインデックスを作成/削除します。
# if you want to create your indexes
adonis scout:up
# or this if you want to drop indexes
adonis scout:down
検索ルールは、検索クエリの実行方法を記述するクラスであり、 Builder
インスタンスのサポートにより、複雑で再利用可能な検索を構築できるようになります。
検索ルールを作成するには、次のコマンドを使用します。
adonis make:searchableRule MySearchRule
ファイル app/Models/SearchableRules/MySearchRule.js にクラス定義があります。
'use strict'
/** @type {typeof import('@brainnit/adonisjs-scout/src/SearchRule')} */
const SearchRule = use ( 'Scout/SearchRule' )
class MySearchRule extends SearchRule {
buildQuery ( ) {
return {
'must' : {
'match' : {
'name' : this . builder . query
}
}
}
}
}
module . exports = MySearchRule
モデルがサポートする検索ルールを Scout に伝えるには、次のメソッドを追加するだけです。
/**
* Specify what search rules the model supports.
*
* The return value(s) must always class namespaces that will be
* resolved by IoC Container.
*
* @static
*
* @method searchableRules
*
* @return {Array|String} ES6 Class
*/
static searchableRules ( ) {
return [ 'App/Models/SearchRules/MySearchRule' ]
}
ほかに何か?提案が必要な場合は、問題を開いてください。