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' ]
}
还有什么?请打开问题寻求建议。