adonisjs scout
1.0.0
Adonis Scout 提供了一個基於驅動程式的解決方案,用於搜尋 Lucid 模型,其很大程度上受到 Laravel Scout 和 Scout Elasticsearch Driver 的啟發。
使用npm或yarn來安裝套件:
npm -i @brainnit/adonisjs-scout
# or
yarn add @brainnit/adonisjs-scout
將 Scout 新增至start/app.js
的服務提供者清單中:
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' ]
}
還有什麼?請打開問題尋求建議。