Suppression d'index à partir Solr à l'aide solrj en tant que client
Question
J'utilise solrj en tant que client pour l'indexation des documents sur le serveur Solr.
Je vais avoir problème en supprimant les index par « id » du serveur Solr. J'utilise le code suivant pour supprimer les index:
server.deleteById("id:20");
server.commit(true,true);
Après cela, quand je cherche à nouveau les documents, le résultat de recherche contient le document ci-dessus aussi. Ne pas savoir ce qui se passe mal avec ce code. S'il vous plaît, aidez-moi avec problème.
Merci!
La solution
Lorsque vous appelez deleteById, il suffit d'utiliser l'identifiant, sans syntaxe de requête:
server.deleteById("20");
server.commit();
Autres conseils
Après avoir supprimé le document, engage le serveur et ajouter les lignes suivantes. Une fois le serveur ligne commit.
UpdateRequest req = new UpdateRequest();
req.setAction( UpdateRequest.ACTION.COMMIT, false, false );
req.add( docs );
UpdateResponse rsp = req.process( server );
Utilisation de la méthode deleteByQuery () pour supprimer les documents correspondants à la requête:
server.deleteByQuery("id:20");
server.commit();
Ainsi, le deleteById ne fonctionnera que si vous formez votre clé en utilisant un seul attribut. Donc, j'ai eu le cas où l'identification est une combinaison de plusieurs attributs tels que employeeId + deptId. Mais, ma table avait employeeId et deptId comme des colonnes séparées et avec des index créés sur elle. Alors, quand je voulais supprimer un disque que je ne l'avais employeeId et non deptId. J'ai utilisé la commande curl pour supprimer où vous pouvez spécifier la colonne et sa valeur et il supprime l'intégralité du dossier.
par exemple. http: // localhost: 8983 / Solr / mise à jour --data « : '-H' Content-Type: text / xml; charset = UTF-8'