Skip to content

$search.index

Description

Ajoute un ou plusieurs objets à un index.

Syntaxe

$search.index( indexReference , records [ , fieldOptions ] )

Paramètres

indexReference string / pojo

Référence de l'index à utiliser. La référence peut avoir deux formes:

  1. Si le paramètre est un string, il désigne un nom d'index déclaré dans le fichier de configuration de l'application. Le moteur se charge d'obtenir un lock sur l'index avant de lancer l'indexation. Il s'appuie sur les types de tokens déclarés dans le paramètre fieldOptions pour déterminer comment instancier le lock sur l'index.
  2. Si le paramètre est un objet pojo, il désigne un lock obtenu au préalable au moyen de la méthode $search.lockIndex. L'application est dans ce cas responsable de libérer le lock à la fin du traitement. L'exemple plus bas montre comment le faire au moyen d'une clause try/finally afin de garantir que le unlock est bien effectué dans tous les cas.
records map / array

Objet(s) à ajouter dans l'index. Le paramètre peut être un map décrivant l'objet ou un tableau de maps.

Les clés et valeurs du map seront utilisés respectivement comme nom de champ et valeur à intégrer dans l'index.

fieldOptions array

Tableau décrivant les options d'indexation pour les champs.

La méthode attend que le paramètre soit un tableau dans lequel chaque entrée est un map contenant les propriétés suivantes:

  • name (requis) : Nom du champ (doit correspondre à une clé d'un enregistrement de records.
  • mode (optionnel) : Mode d'indexation. Les modes reconnus sont:

    • token : tokenisation de la valeur
    • token:<analyzer> : tokenisation de la valeur, avec mode de tokenisation à utiliser, par exemple token:fr. Les analyzers disponibles dépendent du moteur d'indexation utilisé. La méthode $search.lockIndex donne la liste des analyzers disponibles pour lucene.
    • raw : pas de tokenisation (indexation de la valeur complète)
    • no : pas d'indexation de la valeur (elle est ignorée)
  • store (optionnel) : Flag true/false ou valeur yes/no indiquant si la valeur doit être stockée dans l'index. Les implication de cette valeur sont décrites dans la description de l'attribut indexstore de la descript

Retour

Retourne true si les objets ont pu être indexés sans erreur, sinon false.

Exemple

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
// indexation (en principe à ne faire qu'une fois)
var lock = $search.lockIndex("test");
try {
    $search.clear(lock);
    $search.index(lock, [
        { 'id': 1, 'title': 'Carol' },
        { 'id': 2, 'title': 'Wonder Woman' },
        { 'id': 3, 'title': 'Life of Pi' },
        { 'id': 4, 'title': 'Mad Max: Fury Road' },
        { 'id': 5, 'title': 'Moana' },
        { 'id': 6, 'title': 'Philadelphia'}
    ]);
}
finally {
    $search.unlockIndex(lock);
}

// rechercher
$logger.info($search.search("test", "title:max"));