Adonis Scout bietet eine treiberbasierte Lösung für die Suche nach Ihren Lucid-Modellen, die stark von Laravel Scout und Scout Elasticsearch Driver inspiriert ist.
Verwenden Sie npm oder Yarn, um das Paket zu installieren:
npm -i @brainnit/adonisjs-scout
# or
yarn add @brainnit/adonisjs-scout
Fügen Sie Scout zur Liste der Dienstanbieter unter start/app.js
hinzu:
const providers = [
// ...
'@brainnit/adonisjs-scout/providers/ScoutProvider' ,
'@brainnit/adonisjs-scout/providers/IndexKeeperProvider'
] ;
Kopieren Sie config/index.js
in Ihren App-Konfigurationsordner und nennen Sie es scout.js
. Vergessen Sie nicht, Ihre Umgebungsvariablen einzurichten.
Abhängig vom verwendeten Suchmaschinentreiber müssen Sie möglicherweise auch zusätzliche Abhängigkeiten installieren. Um Elasticsearch nutzen zu können, benötigen Sie beispielsweise:
npm i --save elasticsearch bodybuilder
# or
yarn add elasticsearch bodybuilder
Fügen Sie das Merkmal @provider:Searchable
zu Ihren Modellen hinzu und definieren Sie nur die Methoden, die Sie überschreiben möchten, um das Standardverhalten zu ändern:
/** @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
Erstellen Sie anschließend Ihren ersten IndexKeeper und führen Sie die folgenden Befehle aus, um Indizes für Ihre Anwendung zu erstellen/löschen:
# if you want to create your indexes
adonis scout:up
# or this if you want to drop indexes
adonis scout:down
Eine Suchregel ist eine Klasse, die beschreibt, wie eine Suchabfrage ausgeführt wird, und die es Ihnen ermöglicht, mit Unterstützung der Builder
-Instanz komplexe und wiederverwendbare Suchvorgänge zu erstellen.
Um eine Suchregel zu erstellen, verwenden Sie den folgenden Befehl:
adonis make:searchableRule MySearchRule
In der Datei app/Models/SearchableRules/MySearchRule.js finden Sie eine Klassendefinition:
'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
Um Scout mitzuteilen, welche Suchregeln Ihr Modell unterstützt, fügen Sie einfach die folgende Methode hinzu:
/**
* 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' ]
}
Was noch? Bitte öffnen Sie ein Problem für Vorschläge.