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' ]
}
또 뭐야? 제안 사항이 있으면 이슈를 열어주세요.