luceneSuppression de documents à l'aide d'une requête à plusieurs termes


Introduction

La suppression de documents d'un index Lucene est simple lorsque vous avez un champ clé primaire dans votre document (comme dans les bases de données SQL traditionnelles).

Toutefois, vous avez parfois besoin de supprimer un certain nombre de documents basés sur plusieurs champs du document. L'API Lucene vous permet d'y parvenir en spécifiant une requête à utiliser pour la suppression.

Pour ce faire, sélectionnez le bon analyseur, créez la requête, transmettez la requête à indexWriter pour supprimer les documents.

Syntaxe

  1. indexWriter.deleteDocuments (multiTermQuery);
  2. Requête multiTermQuery = new QueryParser ("", analyseur) .parse ("nom_zone1:" valeur du champ 1 "AND nom_du_2):" valeur du champ 2 "");
  3. BooleanQuery multiTermQuery = new BooleanQuery (); multiTermQuery.add (new TermQuery (new Term ("nom_zone1", "valeur du champ 1")), BooleanClause.Occur.MUST); multiTermQuery.add (new TermQuery (nouveau terme ("nom_zone2", "valeur du champ 2")), BooleanClause.Occur.MUST);

Remarques

Mises en garde avec le choix de l'analyseur

Ce n'est pas immédiatement évident, mais l'analyseur que vous utilisez fait une énorme différence dans la façon dont votre requête est exécutée. Ceci est dû au fait que StandardAnalyzer filtre les mots anglais courants tels que "the" et "a". Vous pouvez choisir un analyseur différent (comme KeywordAnalyzer) pour qu'il corresponde exactement. Cela dépend évidemment de votre application de Lucene bien sûr.

Suppression de documents à l'aide d'une requête à plusieurs termes Exemples Liés