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!

Était-ce utile?

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'

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top