Skip to content

$search.lockIndex

Description

Obtient un accès exclusif à l'index en vue d'une mise à jour.

Il est important de noter que toute autre écriture est bloquée tant que le lock n'est pas libéré. Il ne faut donc pas oublier de le libérer, et il est même recommandé de faire le $search.unlockIndex dans une clause finally afin de s'assurer qu'elle est bien exécutée. L'exemple donné plus bas montre comment s'y prendre.

Syntaxe

$search.lockIndex( [ indexName [ , options ] ] )

Paramètres

indexName string
Nom de l'index à vérrouiller. Si spécifié, la valeur doit faire référence à un index déclaré dans le fichier de configuration de l'application.
options map

Options de lock. Les options possibles peuvent varier selon le moteur d'indexation déclaré dans la configuration de l'application pour l'index indexName. L'option timeoutest commune à toutes les implémentations:

timeout number

Délai d'attente max pour l'obtention du lock (en millisecondes).

La méthode attend indéfiniment si le délai n'est pas spécifié ou s'il est inférieure ou égal à 0.

Le moteur d'index lucene intégré à Ewt supporte en plus les options suivantes:

analyzer string / map

Mode de tokenisation des données. Cela indique comment le moteur d'indexation doit analyser les données à indexer. Les modes reconnus par lucene sont les suivants:

  • ar: Arabic
  • bg: Bulgarian
  • bn: Bengali
  • br: Brazilian
  • ca: Catalan
  • cjk: Chinese, Japanese, and Korean
  • ckb: Sorani
  • cz: Czech
  • da: Danish
  • de: German
  • el: Greek
  • en: English
  • es: Spanish
  • et: Estonian
  • eu: Basque
  • fa: Persian
  • fi: Finnish
  • fr: French
  • ga: Irish
  • gl: Galician
  • hi: Hindi
  • hu: Hungarian
  • hy: Armenian
  • id: Indonesian
  • it: Italian
  • lt: Lithuanian
  • lv: Latvian
  • ne: Nepali
  • nl: Dutch
  • no: Norwegian
  • pt: Portuguese
  • ro: Romanian
  • ru: Russian
  • sr: Serbian
  • sv: Swedish
  • ta: Tamil
  • te: Telugu
  • th: Thai
  • tr: Turkish
  • keyword: indexation de mot-clé
  • email: indexation d'adresse e-mail
  • simple: indexation de donnée simple
  • whitespace: découpage sur les espaces
  • classic: indexation standard
  • standard: indexation standard

L'option analyzer peut spécifier le mode de différentes façons:

  • Sous forme de string: On indique le type d'analyzer par défaut (selon la liste ci-dessus). Dans ce cas, l'index writer est créé en utilisant un seul analyzer appliqué à tous les champs.
  • Sous forme de map: On déclare l'analyzer (selon la liste ci-dessus) à utiliser par champ, par exemple

    { labelFR: "fr", labelDE: "de" }
    

    Voir également l'exemple plus bas.

Retour

Retourne un objet pojo contenant le lock sur l'index. En cas d'erreur ou de dépassement du délai d'attente, la méthode retourne null.

Exemple

Exemple de lock simple, sans option.

1
2
3
4
5
6
7
var lock = $search.lockIndex("monindex");
try {
    $search.index([ /* ... */ ]);
}
finally {
    $search.unlockIndex(lock);
}

Exemple de lock avancé qui déclare un mode de tokenisation spécifique par champ. Ici on souhaite que le champ "labelFR" soit tokenisé au moyen d'un analyzer adapté pour le français et "labelEN" par un analyzer adapté pour l'anglais. Les autres champs utilisent un analyzer standard.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
var lock = $search.lockIndex("monindex",
  {
    analyzer: { labelFR: "fr", labelEN: "en" }
  });
try {
  $search.index(lock, [
    { 'id': 0, 'labelFR': 'zéro',   'labelEN': 'zero',  'test': 'test' },
    { 'id': 1, 'labelFR': 'un',     'labelEN': 'one',   'test': 'test' },
    { 'id': 2, 'labelFR': 'deux',   'labelEN': 'two',   'test': 'test' },
    { 'id': 3, 'labelFR': 'trois',  'labelEN': 'three', 'test': 'test' },
    { 'id': 4, 'labelFR': 'quatre', 'labelEN': 'four',  'test': 'test' },
    { 'id': 5, 'labelFR': 'cinq',   'labelEN': 'five',  'test': 'test' },
    { 'id': 6, 'labelFR': 'six',    'labelEN': 'six',   'test': 'test' },
    { 'id': 7, 'labelFR': 'sept',   'labelEN': 'seven', 'test': 'test' },
    { 'id': 8, 'labelFR': 'huit',   'labelEN': 'eight', 'test': 'test' },
    { 'id': 9, 'labelFR': 'neuf',   'labelEN': 'nine',  'test': 'test' }
  ]);
}
finally {
  $search.unlockIndex(lock);
}