Problème de ré-indexation complète dans le module de moissonnage

  • user warning: Table './drupal_www_ori_oai_org/cache_filter' is marked as crashed and last (automatic?) repair failed query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '4:44cb11ea2152f27894727c307328d0cb' in /home/ori-oai/drupal/drupal-6.34/includes/cache.inc on line 27.
  • user warning: Table './drupal_www_ori_oai_org/cache_filter' is marked as crashed and last (automatic?) repair failed query: UPDATE cache_filter SET data = '<div class=\"emailFilter\">Bonjour,</p>\n<p>j\'ai un problème de ré-indexation complète dans le module de moissonnage :</p>\n<p>Je vais prendre l\'exemple de l\'entrepôt de Toulouse pour expliquer le<br />\nproblème.</p>\n<p>On a comme infos :<br />\n <repositoryName>INP Toulouse Theses</repositoryName><br />\n <repositoryID>ethesis.inp-toulouse.fr</repositoryID></p>\n<p>J\'ai un vocabulaire statique qui fait la correspondance pour le module<br />\nde recherche.<br />\n <category id=\"9\"><br />\n <label lang=\"fr\">Thèses INP Toulouse</label><br />\n <value>INP Toulouse Theses</value><br />\n </category></p>\n<p>Donc quand je fait le moissonage les fiches sont indexées sur le<br />\nrepositoryName \"INP Toulouse Theses\".</p>\n<p>À la fin de la moisson je relance mon index pour ne pas attendre la fin<br />\ndu cache et du coup je vois apparaître mes résultats dans la partie<br />\n\"Entrepôts OAI\".</p>\n<p>Jusque là rien d\'anormal.</p>\n<p>Viens ensuite la partie ou je m\'amuse à supprimer complètement mon index.<br />\nJe fait donc un \"rm\" du répertoire indexes/index/ ; relance le module<br />\nd\'indexation puis via le bouton \"Tout ré-indexer\" du module de<br />\nmoissonnage je recrée l\'index.<br />\nJ\'observe du côté serveur que l\'index a bien été entièrement<br />\nreconstruit, donc pas de problème de ce côté.<br />\nJe relance mon module d\'indexation afin de voir la mise à jour dans le<br />\nmodule de recherche, et c\'est là que le problème se pose.</p>\n<p>Pour l\'entrepôt \"INP Toulouse Theses\" je n\'ai plus aucune fiche.</p>\n<p>En jouant avec mon vocabulaire je me suis rendu compte que les fiches<br />\nré-indexées ne sont plus indéxées sur le repositoryName comme lors du<br />\nmoissonage mais sur le repositoryID.<br />\nPour preuve, en modifiant mon vocabulaire comme-ci tout refonctionne<br />\ncôté module de recherche :<br />\n <category id=\"9\"><br />\n <label lang=\"fr\">Thèses INP Toulouse</label><br />\n <value>ethesis.inp-toulouse.fr</value><br />\n </category></p>\n<p>Ai-je fait une mauvaise manipulation ou bien est-ce tout simplement un bug?</p>\n<p>À+</p>\n<p>--<br />\nCe message a\n</div>\n', created = 1507745893, expire = 1507832293, headers = '', serialized = 0 WHERE cid = '4:44cb11ea2152f27894727c307328d0cb' in /home/ori-oai/drupal/drupal-6.34/includes/cache.inc on line 112.
  • user warning: Table './drupal_www_ori_oai_org/cache_filter' is marked as crashed and last (automatic?) repair failed query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '4:2fbc7f3200ff083f9c00f25b6c68567d' in /home/ori-oai/drupal/drupal-6.34/includes/cache.inc on line 27.
  • user warning: Table './drupal_www_ori_oai_org/cache_filter' is marked as crashed and last (automatic?) repair failed query: UPDATE cache_filter SET data = '<div class=\"emailFilter\">Bonjour,</p>\n<p>Il y a un algo dans le moissonneur qui utilise le repositoryId s\'il est<br />\nprésent (car ce champs n\'est pas obligatoire en OAI.), sinon le<br />\nrepositoryName. (OAIStore::getIdentifyInfos)</p>\n<p>Sans doute le problème vient-il de là : la première moisson à été faite<br />\navec le repositoryName et celle de reindexAll, avec le repositoryId.<br />\nJe viens de regarder les différentes séquences, et à priori toutes deux<br />\nfont appel au même circuit de récupération de cette info, donc je ne<br />\nvois pas d\'où vient le décalage....<br />\nJe note donc ça dans un coin et regarderais de plus près dés que j\'aurai<br />\nle temps.</p>\n<p>Merci encore pour cette remontée.</p>\n<p>François</p>\n<p>Mikael Le Bohec wrote:</p>\n<div class=\"emailFilter_Toggle\">\n<blockquote class=\"emailFilter_Author_0\"><p>> Bonjour,<br />\n><br />\n> j\'ai un problème de ré-indexation complète dans le module de<br />\n> moissonnage :<br />\n><br />\n> Je vais prendre l\'exemple de l\'entrepôt de Toulouse pour expliquer le<br />\n> problème.<br />\n><br />\n> On a comme infos :<br />\n> <repositoryName>INP Toulouse Theses</repositoryName><br />\n> <repositoryID>ethesis.inp-toulouse.fr</repositoryID><br />\n><br />\n> J\'ai un vocabulaire statique qui fait la correspondance pour le module<br />\n> de recherche.<br />\n> <category id=\"9\"><br />\n> <label lang=\"fr\">Thèses INP Toulouse</label><br />\n> <value>INP Toulouse Theses</value><br />\n> </category><br />\n><br />\n> Donc quand je fait le moissonage les fiches sont indexées sur le<br />\n> repositoryName \"INP Toulouse Theses\".<br />\n><br />\n> À la fin de la moisson je relance mon index pour ne pas attendre la<br />\n> fin du cache et du coup je vois apparaître mes résultats dans la<br />\n> partie \"Entrepôts OAI\".<br />\n><br />\n> Jusque là rien d\'anormal.<br />\n><br />\n> Viens ensuite la partie ou je m\'amuse à supprimer complètement mon index.<br />\n> Je fait donc un \"rm\" du répertoire indexes/index/ ; relance le module<br />\n> d\'indexation puis via le bouton \"Tout ré-indexer\" du module de<br />\n> moissonnage je recrée l\'index.<br />\n> J\'observe du côté serveur que l\'index a bien été entièrement<br />\n> reconstruit, donc pas de problème de ce côté.<br />\n> Je relance mon module d\'indexation afin de voir la mise à jour dans le<br />\n> module de recherche, et c\'est là que le problème se pose.<br />\n><br />\n> Pour l\'entrepôt \"INP Toulouse Theses\" je n\'ai plus aucune fiche.<br />\n><br />\n> En jouant avec mon vocabulaire je me suis rendu compte que les fiches<br />\n> ré-indexées ne sont plus indéxées sur le repositoryName comme lors du<br />\n> moissonage mais sur le repositoryID.<br />\n> Pour preuve, en modifiant mon vocabulaire comme-ci tout refonctionne<br />\n> côté module de recherche :<br />\n> <category id=\"9\"><br />\n> <label lang=\"fr\">Thèses INP Toulouse</label><br />\n> <value>ethesis.inp-toulouse.fr</value><br />\n> </category><br />\n><br />\n> Ai-je fait une mauvaise manipulation ou bien est-ce tout simplement un<br />\n> bug?<br />\n><br />\n> À+</div>\n</blockquote>\n<p>--<br />\nCe message a\n</div>\n', created = 1507745895, expire = 1507832295, headers = '', serialized = 0 WHERE cid = '4:2fbc7f3200ff083f9c00f25b6c68567d' in /home/ori-oai/drupal/drupal-6.34/includes/cache.inc on line 112.
  • user warning: Table './drupal_www_ori_oai_org/cache_filter' is marked as crashed and last (automatic?) repair failed query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '4:654355e7392211dc51e1a6c435938ba7' in /home/ori-oai/drupal/drupal-6.34/includes/cache.inc on line 27.
  • user warning: Table './drupal_www_ori_oai_org/cache_filter' is marked as crashed and last (automatic?) repair failed query: UPDATE cache_filter SET data = '<div class=\"emailFilter\">François Jannin a écrit :<br />\n<div class=\"emailFilter_Toggle\">\n<blockquote class=\"emailFilter_Author_0\"><p>> Bonjour,<br />\n><br />\n> Il y a un algo dans le moissonneur qui utilise le repositoryId s\'il<br />\n> est présent (car ce champs n\'est pas obligatoire en OAI.), sinon le<br />\n> repositoryName. (OAIStore::getIdentifyInfos)<br />\n><br />\n> Sans doute le problème vient-il de là : la première moisson à été<br />\n> faite avec le repositoryName et celle de reindexAll, avec le<br />\n> repositoryId.<br />\n> Je viens de regarder les différentes séquences, et à priori toutes<br />\n> deux font appel au même circuit de récupération de cette info, donc je<br />\n> ne vois pas d\'où vient le décalage....<br />\n> Je note donc ça dans un coin et regarderais de plus près dés que<br />\n> j\'aurai le temps.<br />\n><br />\n> Merci encore pour cette remontée.</div>\n</blockquote>\n<p>Je viens de regarder d\'un peu plus près et la ré-indexation passe par la<br />\nfonction \"reIndexAll\" de la classe \"HarvestServiceImpl\".</p>\n<p>Dans cette fonction on fait appel à l\'index via la ligne :</p>\n<p>\"indexerInstance.start(repositoryID, harvestConf.getCollection());\"</p>\n<p>Mais quand on regarde la définition de la fonction \"start\" de la classe<br />\n\"IndexerInvoker\" il s\'agit bien du repositoryName et non le repositoryID<br />\nqui est demandé en entrée : \"public boolean start(String repositoryName,<br />\nString collectionName);\"</p>\n<p>J\'ai donc effectué une légère modification dans le code :</p>\n<p>##############################################################################<br />\n===================================================================<br />\n---<br />\nJavaSource/org/orioai/harvesting/domain/service/HarvestServiceImpl.java<br />\n(révision 291)<br />\n+++<br />\nJavaSource/org/orioai/harvesting/domain/service/HarvestServiceImpl.java<br />\n(copie de travail)<br />\n@@ -413,7 +413,8 @@<br />\n List<OAIStoreConfig> storeList =<br />\nharvestConf.getStoreList();<br />\n for(OAIStoreConfig store : storeList){<br />\n String repositoryID =<br />\nstore.getInfos().getRepositoryID();<br />\n- indexerInstance.start(repositoryID,<br />\nharvestConf.getCollection());<br />\n+ String repositoryName =<br />\nstore.getInfos().getRepositoryName();<br />\n+ indexerInstance.start(repositoryName,<br />\nharvestConf.getCollection());<br />\n List<String> idList =<br />\nstorage.getORIIdentifersReIndex(harvestConf.getId(), repositoryID , from);<br />\n for(String ori_id : idList){<br />\n lastRecord =<br />\nidList.indexOf(ori_id) == idList.size()-1;<br />\n##############################################################################</p>\n<p>et depuis tout fonctionne mieux.</p>\n<p>À+<br />\n<div class=\"emailFilter_Toggle\">\n<blockquote class=\"emailFilter_Author_0\"><p>><br />\n><br />\n> François<br />\n><br />\n><br />\n> Mikael Le Bohec wrote:<br />\n></p></blockquote>\n<blockquote class=\"emailFilter_Author_1\"><p>>> Bonjour,<br />\n>><br />\n>> j\'ai un problème de ré-indexation complète dans le module de<br />\n>> moissonnage :<br />\n>><br />\n>> Je vais prendre l\'exemple de l\'entrepôt de Toulouse pour expliquer le<br />\n>> problème.<br />\n>><br />\n>> On a comme infos :<br />\n>> <repositoryName>INP Toulouse Theses</repositoryName><br />\n>> <repositoryID>ethesis.inp-toulouse.fr</repositoryID><br />\n>><br />\n>> J\'ai un vocabulaire statique qui fait la correspondance pour le<br />\n>> module de recherche.<br />\n>> <category id=\"9\"><br />\n>> <label lang=\"fr\">Thèses INP Toulouse</label><br />\n>> <value>INP Toulouse Theses</value><br />\n>> </category><br />\n>><br />\n>> Donc quand je fait le moissonage les fiches sont indexées sur le<br />\n>> repositoryName \"INP Toulouse Theses\".<br />\n>><br />\n>> À la fin de la moisson je relance mon index pour ne pas attendre la<br />\n>> fin du cache et du coup je vois apparaître mes résultats dans la<br />\n>> partie \"Entrepôts OAI\".<br />\n>><br />\n>> Jusque là rien d\'anormal.<br />\n>><br />\n>> Viens ensuite la partie ou je m\'amuse à supprimer complètement mon<br />\n>> index.<br />\n>> Je fait donc un \"rm\" du répertoire indexes/index/ ; relance le module<br />\n>> d\'indexation puis via le bouton \"Tout ré-indexer\" du module de<br />\n>> moissonnage je recrée l\'index.<br />\n>> J\'observe du côté serveur que l\'index a bien été entièrement<br />\n>> reconstruit, donc pas de problème de ce côté.<br />\n>> Je relance mon module d\'indexation afin de voir la mise à jour dans<br />\n>> le module de recherche, et c\'est là que le problème se pose.<br />\n>><br />\n>> Pour l\'entrepôt \"INP Toulouse Theses\" je n\'ai plus aucune fiche.<br />\n>><br />\n>> En jouant avec mon vocabulaire je me suis rendu compte que les fiches<br />\n>> ré-indexées ne sont plus indéxées sur le repositoryName comme lors du<br />\n>> moissonage mais sur le repositoryID.<br />\n>> Pour preuve, en modifiant mon vocabulaire comme-ci tout refonctionne<br />\n>> côté module de recherche :<br />\n>> <category id=\"9\"><br />\n>> <label lang=\"fr\">Thèses INP Toulouse</label><br />\n>> <value>ethesis.inp-toulouse.fr</value><br />\n>> </category><br />\n>><br />\n>> Ai-je fait une mauvaise manipulation ou bien est-ce tout simplement<br />\n>> un bug?<br />\n>><br />\n>> À+</p></blockquote>\n<blockquote class=\"emailFilter_Author_0\"><p>><br />\n></div>\n</blockquote>\n<p>--<br />\nCe message a\n</div>\n', created = 1507745895, expire = 1507832295, headers = '', serialized = 0 WHERE cid = '4:654355e7392211dc51e1a6c435938ba7' in /home/ori-oai/drupal/drupal-6.34/includes/cache.inc on line 112.
  • user warning: Table './drupal_www_ori_oai_org/cache_filter' is marked as crashed and last (automatic?) repair failed query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '4:7ab6e632d9b28ca7a0fd9b08b1d698ef' in /home/ori-oai/drupal/drupal-6.34/includes/cache.inc on line 27.
  • user warning: Table './drupal_www_ori_oai_org/cache_filter' is marked as crashed and last (automatic?) repair failed query: UPDATE cache_filter SET data = '<div class=\"emailFilter\">Mikael Le Bohec wrote:</p>\n<div class=\"emailFilter_Toggle\">\n<blockquote class=\"emailFilter_Author_0\"><p>> François Jannin a écrit :<br />\n></p></blockquote>\n<blockquote class=\"emailFilter_Author_1\"><p>>> Bonjour,<br />\n>><br />\n>> Il y a un algo dans le moissonneur qui utilise le repositoryId s\'il<br />\n>> est présent (car ce champs n\'est pas obligatoire en OAI.), sinon le<br />\n>> repositoryName. (OAIStore::getIdentifyInfos)<br />\n>><br />\n>> Sans doute le problème vient-il de là : la première moisson à été<br />\n>> faite avec le repositoryName et celle de reindexAll, avec le<br />\n>> repositoryId.<br />\n>> Je viens de regarder les différentes séquences, et à priori toutes<br />\n>> deux font appel au même circuit de récupération de cette info, donc<br />\n>> je ne vois pas d\'où vient le décalage....<br />\n>> Je note donc ça dans un coin et regarderais de plus près dés que<br />\n>> j\'aurai le temps.<br />\n>><br />\n>> Merci encore pour cette remontée.</p></blockquote>\n<blockquote class=\"emailFilter_Author_0\"><p>><br />\n> Je viens de regarder d\'un peu plus près et la ré-indexation passe par<br />\n> la fonction \"reIndexAll\" de la classe \"HarvestServiceImpl\".<br />\n><br />\n> Dans cette fonction on fait appel à l\'index via la ligne :<br />\n><br />\n> \"indexerInstance.start(repositoryID, harvestConf.getCollection());\"<br />\n><br />\n> Mais quand on regarde la définition de la fonction \"start\" de la<br />\n> classe \"IndexerInvoker\" il s\'agit bien du repositoryName et non le<br />\n> repositoryID qui est demandé en entrée : \"public boolean start(String<br />\n> repositoryName, String collectionName);\"<br />\n></div>\n</blockquote>\n<p>Oui, mais à ce moment-là il faudrait également harmoniser avec la<br />\nméthode harvest, qui utilise le champ repositoryId, l\'important étant<br />\nque ce soit toujours la même valeur qui soit utilisée, car c\'est par<br />\ncette valeur que les fiches sont reliées à un entrepôt.</p>\n<p>A+</p>\n<div class=\"emailFilter_Toggle\">\n<blockquote class=\"emailFilter_Author_0\"><p>> J\'ai donc effectué une légère modification dans le code :<br />\n><br />\n> ##############################################################################<br />\n><br />\n> ===================================================================<br />\n> ---<br />\n> JavaSource/org/orioai/harvesting/domain/service/HarvestServiceImpl.java<br />\n> (révision 291)<br />\n> +++<br />\n> JavaSource/org/orioai/harvesting/domain/service/HarvestServiceImpl.java<br />\n> (copie de travail)<br />\n> @@ -413,7 +413,8 @@<br />\n> List<OAIStoreConfig> storeList =<br />\n> harvestConf.getStoreList();<br />\n> for(OAIStoreConfig store : storeList){<br />\n> String repositoryID =<br />\n> store.getInfos().getRepositoryID();<br />\n> - indexerInstance.start(repositoryID,<br />\n> harvestConf.getCollection());<br />\n> + String repositoryName =<br />\n> store.getInfos().getRepositoryName();<br />\n> + indexerInstance.start(repositoryName,<br />\n> harvestConf.getCollection());<br />\n> List<String> idList =<br />\n> storage.getORIIdentifersReIndex(harvestConf.getId(), repositoryID ,<br />\n> from);<br />\n> for(String ori_id : idList){<br />\n> lastRecord =<br />\n> idList.indexOf(ori_id) == idList.size()-1;<br />\n> ##############################################################################<br />\n><br />\n><br />\n> et depuis tout fonctionne mieux.<br />\n><br />\n> À+<br />\n></p></blockquote>\n<blockquote class=\"emailFilter_Author_1\"><p>>><br />\n>><br />\n>> François<br />\n>><br />\n>><br />\n>> Mikael Le Bohec wrote:<br />\n>></p></blockquote>\n<blockquote class=\"emailFilter_Author_2\"><p>>>> Bonjour,<br />\n>>><br />\n>>> j\'ai un problème de ré-indexation complète dans le module de<br />\n>>> moissonnage :<br />\n>>><br />\n>>> Je vais prendre l\'exemple de l\'entrepôt de Toulouse pour expliquer<br />\n>>> le problème.<br />\n>>><br />\n>>> On a comme infos :<br />\n>>> <repositoryName>INP Toulouse Theses</repositoryName><br />\n>>> <repositoryID>ethesis.inp-toulouse.fr</repositoryID><br />\n>>><br />\n>>> J\'ai un vocabulaire statique qui fait la correspondance pour le<br />\n>>> module de recherche.<br />\n>>> <category id=\"9\"><br />\n>>> <label lang=\"fr\">Thèses INP Toulouse</label><br />\n>>> <value>INP Toulouse Theses</value><br />\n>>> </category><br />\n>>><br />\n>>> Donc quand je fait le moissonage les fiches sont indexées sur le<br />\n>>> repositoryName \"INP Toulouse Theses\".<br />\n>>><br />\n>>> À la fin de la moisson je relance mon index pour ne pas attendre la<br />\n>>> fin du cache et du coup je vois apparaître mes résultats dans la<br />\n>>> partie \"Entrepôts OAI\".<br />\n>>><br />\n>>> Jusque là rien d\'anormal.<br />\n>>><br />\n>>> Viens ensuite la partie ou je m\'amuse à supprimer complètement mon<br />\n>>> index.<br />\n>>> Je fait donc un \"rm\" du répertoire indexes/index/ ; relance le<br />\n>>> module d\'indexation puis via le bouton \"Tout ré-indexer\" du module<br />\n>>> de moissonnage je recrée l\'index.<br />\n>>> J\'observe du côté serveur que l\'index a bien été entièrement<br />\n>>> reconstruit, donc pas de problème de ce côté.<br />\n>>> Je relance mon module d\'indexation afin de voir la mise à jour dans<br />\n>>> le module de recherche, et c\'est là que le problème se pose.<br />\n>>><br />\n>>> Pour l\'entrepôt \"INP Toulouse Theses\" je n\'ai plus aucune fiche.<br />\n>>><br />\n>>> En jouant avec mon vocabulaire je me suis rendu compte que les<br />\n>>> fiches ré-indexées ne sont plus indéxées sur le repositoryName comme<br />\n>>> lors du moissonage mais sur le repositoryID.<br />\n>>> Pour preuve, en modifiant mon vocabulaire comme-ci tout refonctionne<br />\n>>> côté module de recherche :<br />\n>>> <category id=\"9\"><br />\n>>> <label lang=\"fr\">Thèses INP Toulouse</label><br />\n>>> <value>ethesis.inp-toulouse.fr</value><br />\n>>> </category><br />\n>>><br />\n>>> Ai-je fait une mauvaise manipulation ou bien est-ce tout simplement<br />\n>>> un bug?<br />\n>>><br />\n>>> À+</p></blockquote>\n<blockquote class=\"emailFilter_Author_1\"><p>>><br />\n>><br />\n>></p></blockquote>\n<blockquote class=\"emailFilter_Author_0\"><p>></div>\n</blockquote>\n<p>--<br />\nCe message a\n</div>\n', created = 1507745895, expire = 1507832295, headers = '', serialized = 0 WHERE cid = '4:7ab6e632d9b28ca7a0fd9b08b1d698ef' in /home/ori-oai/drupal/drupal-6.34/includes/cache.inc on line 112.
  • user warning: Table './drupal_www_ori_oai_org/cache_filter' is marked as crashed and last (automatic?) repair failed query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '4:9749b4bbccb9a2ff0d4c0d72979cc9a2' in /home/ori-oai/drupal/drupal-6.34/includes/cache.inc on line 27.
  • user warning: Table './drupal_www_ori_oai_org/cache_filter' is marked as crashed and last (automatic?) repair failed query: UPDATE cache_filter SET data = '<div class=\"emailFilter\">François Jannin a écrit :<br />\n<div class=\"emailFilter_Toggle\">\n<blockquote class=\"emailFilter_Author_0\"><p>> Mikael Le Bohec wrote:<br />\n></p></blockquote>\n<blockquote class=\"emailFilter_Author_1\"><p>>> François Jannin a écrit :<br />\n>></p></blockquote>\n<blockquote class=\"emailFilter_Author_2\"><p>>>> Bonjour,<br />\n>>><br />\n>>> Il y a un algo dans le moissonneur qui utilise le repositoryId s\'il<br />\n>>> est présent (car ce champs n\'est pas obligatoire en OAI.), sinon le<br />\n>>> repositoryName. (OAIStore::getIdentifyInfos)<br />\n>>><br />\n>>> Sans doute le problème vient-il de là : la première moisson à été<br />\n>>> faite avec le repositoryName et celle de reindexAll, avec le<br />\n>>> repositoryId.<br />\n>>> Je viens de regarder les différentes séquences, et à priori toutes<br />\n>>> deux font appel au même circuit de récupération de cette info, donc<br />\n>>> je ne vois pas d\'où vient le décalage....</div>\n</blockquote>\n<p>Je viens de trouver la zone exacte du problème :</p>\n<p>Dans OAIStore::processAddOrUpdate on a =><br />\nindexer.start(infos.getRepositoryName(), collection);<br />\nDans OAIStore::processPersistentDeleted on a =><br />\nindexer.start(infos.getRepositoryID(), collection);<br />\nDans HarvestServiceImpl::reIndexAll on a =><br />\nindexerInstance.start(repositoryID, harvestConf.getCollection());</p>\n<p>L\'indexation est donc bien faite tantôt sur le repositoryName tantôt sur<br />\nle repositoryID.<br />\nSeul l\'ajout de fiche via le moissonnage utilise le repositoryName.<br />\nIl suffit donc d\'harmoniser l\'ensemble pour utiliser le repositoryName<br />\ndans les trois cas puisque c\'est un attribut obligatoire.</p>\n<p>À+<br />\n<div class=\"emailFilter_Toggle\">\n<blockquote class=\"emailFilter_Author_2\"><p>>>> Je note donc ça dans un coin et regarderais de plus près dés que<br />\n>>> j\'aurai le temps.<br />\n>>><br />\n>>> Merci encore pour cette remontée.</p></blockquote>\n<blockquote class=\"emailFilter_Author_1\"><p>>><br />\n>> Je viens de regarder d\'un peu plus près et la ré-indexation passe par<br />\n>> la fonction \"reIndexAll\" de la classe \"HarvestServiceImpl\".<br />\n>><br />\n>> Dans cette fonction on fait appel à l\'index via la ligne :<br />\n>><br />\n>> \"indexerInstance.start(repositoryID, harvestConf.getCollection());\"<br />\n>><br />\n>> Mais quand on regarde la définition de la fonction \"start\" de la<br />\n>> classe \"IndexerInvoker\" il s\'agit bien du repositoryName et non le<br />\n>> repositoryID qui est demandé en entrée : \"public boolean start(String<br />\n>> repositoryName, String collectionName);\"<br />\n>></p></blockquote>\n<blockquote class=\"emailFilter_Author_0\"><p>> Oui, mais à ce moment-là il faudrait également harmoniser avec la<br />\n> méthode harvest, qui utilise le champ repositoryId, l\'important étant<br />\n> que ce soit toujours la même valeur qui soit utilisée, car c\'est par<br />\n> cette valeur que les fiches sont reliées à un entrepôt.<br />\n><br />\n> A+<br />\n></p></blockquote>\n<blockquote class=\"emailFilter_Author_1\"><p>>> J\'ai donc effectué une légère modification dans le code :<br />\n>><br />\n>> ##############################################################################<br />\n>><br />\n>> ===================================================================<br />\n>> ---<br />\n>> JavaSource/org/orioai/harvesting/domain/service/HarvestServiceImpl.java<br />\n>> (révision 291)<br />\n>> +++<br />\n>> JavaSource/org/orioai/harvesting/domain/service/HarvestServiceImpl.java<br />\n>> (copie de travail)<br />\n>> @@ -413,7 +413,8 @@<br />\n>> List<OAIStoreConfig> storeList =<br />\n>> harvestConf.getStoreList();<br />\n>> for(OAIStoreConfig store : storeList){<br />\n>> String repositoryID =<br />\n>> store.getInfos().getRepositoryID();<br />\n>> - indexerInstance.start(repositoryID,<br />\n>> harvestConf.getCollection());<br />\n>> + String repositoryName =<br />\n>> store.getInfos().getRepositoryName();<br />\n>> + indexerInstance.start(repositoryName,<br />\n>> harvestConf.getCollection());<br />\n>> List<String> idList =<br />\n>> storage.getORIIdentifersReIndex(harvestConf.getId(), repositoryID ,<br />\n>> from);<br />\n>> for(String ori_id : idList){<br />\n>> lastRecord =<br />\n>> idList.indexOf(ori_id) == idList.size()-1;<br />\n>> ##############################################################################<br />\n>><br />\n>><br />\n>> et depuis tout fonctionne mieux.<br />\n>><br />\n>> À+<br />\n>></p></blockquote>\n<blockquote class=\"emailFilter_Author_2\"><p>>>><br />\n>>><br />\n>>> François<br />\n>>><br />\n>>><br />\n>>> Mikael Le Bohec wrote:<br />\n>>></p></blockquote>\n<blockquote class=\"emailFilter_Author_3\"><p>>>>> Bonjour,<br />\n>>>><br />\n>>>> j\'ai un problème de ré-indexation complète dans le module de<br />\n>>>> moissonnage :<br />\n>>>><br />\n>>>> Je vais prendre l\'exemple de l\'entrepôt de Toulouse pour expliquer<br />\n>>>> le problème.<br />\n>>>><br />\n>>>> On a comme infos :<br />\n>>>> <repositoryName>INP Toulouse Theses</repositoryName><br />\n>>>> <repositoryID>ethesis.inp-toulouse.fr</repositoryID><br />\n>>>><br />\n>>>> J\'ai un vocabulaire statique qui fait la correspondance pour le<br />\n>>>> module de recherche.<br />\n>>>> <category id=\"9\"><br />\n>>>> <label lang=\"fr\">Thèses INP Toulouse</label><br />\n>>>> <value>INP Toulouse Theses</value><br />\n>>>> </category><br />\n>>>><br />\n>>>> Donc quand je fait le moissonage les fiches sont indexées sur le<br />\n>>>> repositoryName \"INP Toulouse Theses\".<br />\n>>>><br />\n>>>> À la fin de la moisson je relance mon index pour ne pas attendre la<br />\n>>>> fin du cache et du coup je vois apparaître mes résultats dans la<br />\n>>>> partie \"Entrepôts OAI\".<br />\n>>>><br />\n>>>> Jusque là rien d\'anormal.<br />\n>>>><br />\n>>>> Viens ensuite la partie ou je m\'amuse à supprimer complètement mon<br />\n>>>> index.<br />\n>>>> Je fait donc un \"rm\" du répertoire indexes/index/ ; relance le<br />\n>>>> module d\'indexation puis via le bouton \"Tout ré-indexer\" du module<br />\n>>>> de moissonnage je recrée l\'index.<br />\n>>>> J\'observe du côté serveur que l\'index a bien été entièrement<br />\n>>>> reconstruit, donc pas de problème de ce côté.<br />\n>>>> Je relance mon module d\'indexation afin de voir la mise à jour dans<br />\n>>>> le module de recherche, et c\'est là que le problème se pose.<br />\n>>>><br />\n>>>> Pour l\'entrepôt \"INP Toulouse Theses\" je n\'ai plus aucune fiche.<br />\n>>>><br />\n>>>> En jouant avec mon vocabulaire je me suis rendu compte que les<br />\n>>>> fiches ré-indexées ne sont plus indéxées sur le repositoryName<br />\n>>>> comme lors du moissonage mais sur le repositoryID.<br />\n>>>> Pour preuve, en modifiant mon vocabulaire comme-ci tout<br />\n>>>> refonctionne côté module de recherche :<br />\n>>>> <category id=\"9\"><br />\n>>>> <label lang=\"fr\">Thèses INP Toulouse</label><br />\n>>>> <value>ethesis.inp-toulouse.fr</value><br />\n>>>> </category><br />\n>>>><br />\n>>>> Ai-je fait une mauvaise manipulation ou bien est-ce tout simplement<br />\n>>>> un bug?<br />\n>>>><br />\n>>>> À+</p></blockquote>\n<blockquote class=\"emailFilter_Author_2\"><p>>>><br />\n>>><br />\n>>></p></blockquote>\n<blockquote class=\"emailFilter_Author_1\"><p>>></p></blockquote>\n<blockquote class=\"emailFilter_Author_0\"><p>></div>\n</blockquote>\n<p>--<br />\nCe message a\n</div>\n', created = 1507745895, expire = 1507832295, headers = '', serialized = 0 WHERE cid = '4:9749b4bbccb9a2ff0d4c0d72979cc9a2' in /home/ori-oai/drupal/drupal-6.34/includes/cache.inc on line 112.
  • user warning: Table './drupal_www_ori_oai_org/cache_filter' is marked as crashed and last (automatic?) repair failed query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '4:b64a17acb28a9af0aea2ff2a144fbca3' in /home/ori-oai/drupal/drupal-6.34/includes/cache.inc on line 27.
  • user warning: Table './drupal_www_ori_oai_org/cache_filter' is marked as crashed and last (automatic?) repair failed query: UPDATE cache_filter SET data = '<div class=\"emailFilter\">Mikael Le Bohec wrote:</p>\n<div class=\"emailFilter_Toggle\">\n<blockquote class=\"emailFilter_Author_0\"><p>> François Jannin a écrit :<br />\n></p></blockquote>\n<blockquote class=\"emailFilter_Author_1\"><p>>> Mikael Le Bohec wrote:<br />\n>></p></blockquote>\n<blockquote class=\"emailFilter_Author_2\"><p>>>> François Jannin a écrit :<br />\n>>></p></blockquote>\n<blockquote class=\"emailFilter_Author_3\"><p>>>>> Bonjour,<br />\n>>>><br />\n>>>> Il y a un algo dans le moissonneur qui utilise le repositoryId<br />\n>>>> s\'il est présent (car ce champs n\'est pas obligatoire en OAI.),<br />\n>>>> sinon le repositoryName. (OAIStore::getIdentifyInfos)<br />\n>>>><br />\n>>>> Sans doute le problème vient-il de là : la première moisson à été<br />\n>>>> faite avec le repositoryName et celle de reindexAll, avec le<br />\n>>>> repositoryId.<br />\n>>>> Je viens de regarder les différentes séquences, et à priori toutes<br />\n>>>> deux font appel au même circuit de récupération de cette info, donc<br />\n>>>> je ne vois pas d\'où vient le décalage....</p></blockquote>\n<blockquote class=\"emailFilter_Author_2\"><p>>>></p></blockquote>\n<blockquote class=\"emailFilter_Author_0\"><p>> Je viens de trouver la zone exacte du problème :<br />\n><br />\n> Dans OAIStore::processAddOrUpdate on a =><br />\n> indexer.start(infos.getRepositoryName(), collection);<br />\n> Dans OAIStore::processPersistentDeleted on a =><br />\n> indexer.start(infos.getRepositoryID(), collection);<br />\n> Dans HarvestServiceImpl::reIndexAll on a =><br />\n> indexerInstance.start(repositoryID, harvestConf.getCollection());<br />\n><br />\n> L\'indexation est donc bien faite tantôt sur le repositoryName tantôt<br />\n> sur le repositoryID.<br />\n> Seul l\'ajout de fiche via le moissonnage utilise le repositoryName.<br />\n> Il suffit donc d\'harmoniser l\'ensemble pour utiliser le repositoryName<br />\n> dans les trois cas puisque c\'est un attribut obligatoire.<br />\n></div>\n</blockquote>\n<p>Merci d\'avoir trouvé la brebis galeuse ;)<br />\nJ\'ai repercuté ces modifs sur le SVN (trunk et branche 1..0) en<br />\nattendant de repercuter ces corrections dans la prochaine version taggée.</p>\n<p>A+</p>\n<div class=\"emailFilter_Toggle\">\n<blockquote class=\"emailFilter_Author_0\"><p>> À+<br />\n></p></blockquote>\n<blockquote class=\"emailFilter_Author_3\"><p>>>>> Je note donc ça dans un coin et regarderais de plus près dés que<br />\n>>>> j\'aurai le temps.<br />\n>>>><br />\n>>>> Merci encore pour cette remontée.</p></blockquote>\n<blockquote class=\"emailFilter_Author_2\"><p>>>><br />\n>>><br />\n>>> Je viens de regarder d\'un peu plus près et la ré-indexation passe<br />\n>>> par la fonction \"reIndexAll\" de la classe \"HarvestServiceImpl\".<br />\n>>><br />\n>>> Dans cette fonction on fait appel à l\'index via la ligne :<br />\n>>><br />\n>>> \"indexerInstance.start(repositoryID, harvestConf.getCollection());\"<br />\n>>><br />\n>>> Mais quand on regarde la définition de la fonction \"start\" de la<br />\n>>> classe \"IndexerInvoker\" il s\'agit bien du repositoryName et non le<br />\n>>> repositoryID qui est demandé en entrée : \"public boolean<br />\n>>> start(String repositoryName, String collectionName);\"<br />\n>>></p></blockquote>\n<blockquote class=\"emailFilter_Author_1\"><p>>> Oui, mais à ce moment-là il faudrait également harmoniser avec la<br />\n>> méthode harvest, qui utilise le champ repositoryId, l\'important étant<br />\n>> que ce soit toujours la même valeur qui soit utilisée, car c\'est par<br />\n>> cette valeur que les fiches sont reliées à un entrepôt.<br />\n>><br />\n>> A+<br />\n>></p></blockquote>\n<blockquote class=\"emailFilter_Author_2\"><p>>>> J\'ai donc effectué une légère modification dans le code :<br />\n>>><br />\n>>> ##############################################################################<br />\n>>><br />\n>>> ===================================================================<br />\n>>> ---<br />\n>>> JavaSource/org/orioai/harvesting/domain/service/HarvestServiceImpl.java<br />\n>>> (révision 291)<br />\n>>> +++<br />\n>>> JavaSource/org/orioai/harvesting/domain/service/HarvestServiceImpl.java<br />\n>>> (copie de travail)<br />\n>>> @@ -413,7 +413,8 @@<br />\n>>> List<OAIStoreConfig> storeList =<br />\n>>> harvestConf.getStoreList();<br />\n>>> for(OAIStoreConfig store : storeList){<br />\n>>> String repositoryID =<br />\n>>> store.getInfos().getRepositoryID();<br />\n>>> - indexerInstance.start(repositoryID,<br />\n>>> harvestConf.getCollection());<br />\n>>> + String repositoryName =<br />\n>>> store.getInfos().getRepositoryName();<br />\n>>> +<br />\n>>> indexerInstance.start(repositoryName, harvestConf.getCollection());<br />\n>>> List<String> idList =<br />\n>>> storage.getORIIdentifersReIndex(harvestConf.getId(), repositoryID ,<br />\n>>> from);<br />\n>>> for(String ori_id : idList){<br />\n>>> lastRecord =<br />\n>>> idList.indexOf(ori_id) == idList.size()-1;<br />\n>>> ##############################################################################<br />\n>>><br />\n>>><br />\n>>> et depuis tout fonctionne mieux.<br />\n>>><br />\n>>> À+<br />\n>>></p></blockquote>\n<blockquote class=\"emailFilter_Author_3\"><p>>>>><br />\n>>>><br />\n>>>> François<br />\n>>>><br />\n>>>><br />\n>>>> Mikael Le Bohec wrote:<br />\n>>>></p></blockquote>\n<blockquote class=\"emailFilter_Author_4\"><p>>>>>> Bonjour,<br />\n>>>>><br />\n>>>>> j\'ai un problème de ré-indexation complète dans le module de<br />\n>>>>> moissonnage :<br />\n>>>>><br />\n>>>>> Je vais prendre l\'exemple de l\'entrepôt de Toulouse pour expliquer<br />\n>>>>> le problème.<br />\n>>>>><br />\n>>>>> On a comme infos :<br />\n>>>>> <repositoryName>INP Toulouse Theses</repositoryName><br />\n>>>>> <repositoryID>ethesis.inp-toulouse.fr</repositoryID><br />\n>>>>><br />\n>>>>> J\'ai un vocabulaire statique qui fait la correspondance pour le<br />\n>>>>> module de recherche.<br />\n>>>>> <category id=\"9\"><br />\n>>>>> <label lang=\"fr\">Thèses INP Toulouse</label><br />\n>>>>> <value>INP Toulouse Theses</value><br />\n>>>>> </category><br />\n>>>>><br />\n>>>>> Donc quand je fait le moissonage les fiches sont indexées sur le<br />\n>>>>> repositoryName \"INP Toulouse Theses\".<br />\n>>>>><br />\n>>>>> À la fin de la moisson je relance mon index pour ne pas attendre<br />\n>>>>> la fin du cache et du coup je vois apparaître mes résultats dans<br />\n>>>>> la partie \"Entrepôts OAI\".<br />\n>>>>><br />\n>>>>> Jusque là rien d\'anormal.<br />\n>>>>><br />\n>>>>> Viens ensuite la partie ou je m\'amuse à supprimer complètement mon<br />\n>>>>> index.<br />\n>>>>> Je fait donc un \"rm\" du répertoire indexes/index/ ; relance le<br />\n>>>>> module d\'indexation puis via le bouton \"Tout ré-indexer\" du module<br />\n>>>>> de moissonnage je recrée l\'index.<br />\n>>>>> J\'observe du côté serveur que l\'index a bien été entièrement<br />\n>>>>> reconstruit, donc pas de problème de ce côté.<br />\n>>>>> Je relance mon module d\'indexation afin de voir la mise à jour<br />\n>>>>> dans le module de recherche, et c\'est là que le problème se pose.<br />\n>>>>><br />\n>>>>> Pour l\'entrepôt \"INP Toulouse Theses\" je n\'ai plus aucune fiche.<br />\n>>>>><br />\n>>>>> En jouant avec mon vocabulaire je me suis rendu compte que les<br />\n>>>>> fiches ré-indexées ne sont plus indéxées sur le repositoryName<br />\n>>>>> comme lors du moissonage mais sur le repositoryID.<br />\n>>>>> Pour preuve, en modifiant mon vocabulaire comme-ci tout<br />\n>>>>> refonctionne côté module de recherche :<br />\n>>>>> <category id=\"9\"><br />\n>>>>> <label lang=\"fr\">Thèses INP Toulouse</label><br />\n>>>>> <value>ethesis.inp-toulouse.fr</value><br />\n>>>>> </category><br />\n>>>>><br />\n>>>>> Ai-je fait une mauvaise manipulation ou bien est-ce tout<br />\n>>>>> simplement un bug?<br />\n>>>>><br />\n>>>>> À+</p></blockquote>\n<blockquote class=\"emailFilter_Author_3\"><p>>>>><br />\n>>>><br />\n>>>><br />\n>>>></p></blockquote>\n<blockquote class=\"emailFilter_Author_2\"><p>>>></p></blockquote>\n<blockquote class=\"emailFilter_Author_1\"><p>>></p></blockquote>\n<blockquote class=\"emailFilter_Author_0\"><p>><br />\n></div>\n</blockquote>\n<p>--<br />\nCe message a\n</div>\n', created = 1507745895, expire = 1507832295, headers = '', serialized = 0 WHERE cid = '4:b64a17acb28a9af0aea2ff2a144fbca3' in /home/ori-oai/drupal/drupal-6.34/includes/cache.inc on line 112.
6 messages / 0 nouveaux
Dernière contribution
mikaellebohec
Problème de ré-indexation complète dans le module de moissonnage
Bonjour,

j'ai un problème de ré-indexation complète dans le module de moissonnage :

Je vais prendre l'exemple de l'entrepôt de Toulouse pour expliquer le
problème.

On a comme infos :
INP Toulouse Theses
ethesis.inp-toulouse.fr

J'ai un vocabulaire statique qui fait la correspondance pour le module
de recherche.


INP Toulouse Theses

Donc quand je fait le moissonage les fiches sont indexées sur le
repositoryName "INP Toulouse Theses".

À la fin de la moisson je relance mon index pour ne pas attendre la fin
du cache et du coup je vois apparaître mes résultats dans la partie
"Entrepôts OAI".

Jusque là rien d'anormal.

Viens ensuite la partie ou je m'amuse à supprimer complètement mon index.
Je fait donc un "rm" du répertoire indexes/index/ ; relance le module
d'indexation puis via le bouton "Tout ré-indexer" du module de
moissonnage je recrée l'index.
J'observe du côté serveur que l'index a bien été entièrement
reconstruit, donc pas de problème de ce côté.
Je relance mon module d'indexation afin de voir la mise à jour dans le
module de recherche, et c'est là que le problème se pose.

Pour l'entrepôt "INP Toulouse Theses" je n'ai plus aucune fiche.

En jouant avec mon vocabulaire je me suis rendu compte que les fiches
ré-indexées ne sont plus indéxées sur le repositoryName comme lors du
moissonage mais sur le repositoryID.
Pour preuve, en modifiant mon vocabulaire comme-ci tout refonctionne
côté module de recherche :


ethesis.inp-toulouse.fr

Ai-je fait une mauvaise manipulation ou bien est-ce tout simplement un bug?

À+

--
Ce message a

francoisjannin
Bonjour,

Il y a un algo dans le moissonneur qui utilise le repositoryId s'il est
présent (car ce champs n'est pas obligatoire en OAI.), sinon le
repositoryName. (OAIStore::getIdentifyInfos)

Sans doute le problème vient-il de là : la première moisson à été faite
avec le repositoryName et celle de reindexAll, avec le repositoryId.
Je viens de regarder les différentes séquences, et à priori toutes deux
font appel au même circuit de récupération de cette info, donc je ne
vois pas d'où vient le décalage....
Je note donc ça dans un coin et regarderais de plus près dés que j'aurai
le temps.

Merci encore pour cette remontée.

François

Mikael Le Bohec wrote:

> Bonjour,
>
> j'ai un problème de ré-indexation complète dans le module de
> moissonnage :
>
> Je vais prendre l'exemple de l'entrepôt de Toulouse pour expliquer le
> problème.
>
> On a comme infos :
> INP Toulouse Theses
> ethesis.inp-toulouse.fr
>
> J'ai un vocabulaire statique qui fait la correspondance pour le module
> de recherche.
>
>
> INP Toulouse Theses
>

>
> Donc quand je fait le moissonage les fiches sont indexées sur le
> repositoryName "INP Toulouse Theses".
>
> À la fin de la moisson je relance mon index pour ne pas attendre la
> fin du cache et du coup je vois apparaître mes résultats dans la
> partie "Entrepôts OAI".
>
> Jusque là rien d'anormal.
>
> Viens ensuite la partie ou je m'amuse à supprimer complètement mon index.
> Je fait donc un "rm" du répertoire indexes/index/ ; relance le module
> d'indexation puis via le bouton "Tout ré-indexer" du module de
> moissonnage je recrée l'index.
> J'observe du côté serveur que l'index a bien été entièrement
> reconstruit, donc pas de problème de ce côté.
> Je relance mon module d'indexation afin de voir la mise à jour dans le
> module de recherche, et c'est là que le problème se pose.
>
> Pour l'entrepôt "INP Toulouse Theses" je n'ai plus aucune fiche.
>
> En jouant avec mon vocabulaire je me suis rendu compte que les fiches
> ré-indexées ne sont plus indéxées sur le repositoryName comme lors du
> moissonage mais sur le repositoryID.
> Pour preuve, en modifiant mon vocabulaire comme-ci tout refonctionne
> côté module de recherche :
>
>
> ethesis.inp-toulouse.fr
>

>
> Ai-je fait une mauvaise manipulation ou bien est-ce tout simplement un
> bug?
>
> À+

--
Ce message a

mikaellebohec
François Jannin a écrit :

> Bonjour,
>
> Il y a un algo dans le moissonneur qui utilise le repositoryId s'il
> est présent (car ce champs n'est pas obligatoire en OAI.), sinon le
> repositoryName. (OAIStore::getIdentifyInfos)
>
> Sans doute le problème vient-il de là : la première moisson à été
> faite avec le repositoryName et celle de reindexAll, avec le
> repositoryId.
> Je viens de regarder les différentes séquences, et à priori toutes
> deux font appel au même circuit de récupération de cette info, donc je
> ne vois pas d'où vient le décalage....
> Je note donc ça dans un coin et regarderais de plus près dés que
> j'aurai le temps.
>
> Merci encore pour cette remontée.

Je viens de regarder d'un peu plus près et la ré-indexation passe par la
fonction "reIndexAll" de la classe "HarvestServiceImpl".

Dans cette fonction on fait appel à l'index via la ligne :

"indexerInstance.start(repositoryID, harvestConf.getCollection());"

Mais quand on regarde la définition de la fonction "start" de la classe
"IndexerInvoker" il s'agit bien du repositoryName et non le repositoryID
qui est demandé en entrée : "public boolean start(String repositoryName,
String collectionName);"

J'ai donc effectué une légère modification dans le code :

##############################################################################
===================================================================
---
JavaSource/org/orioai/harvesting/domain/service/HarvestServiceImpl.java
(révision 291)
+++
JavaSource/org/orioai/harvesting/domain/service/HarvestServiceImpl.java
(copie de travail)
@@ -413,7 +413,8 @@
List storeList =
harvestConf.getStoreList();
for(OAIStoreConfig store : storeList){
String repositoryID =
store.getInfos().getRepositoryID();
- indexerInstance.start(repositoryID,
harvestConf.getCollection());
+ String repositoryName =
store.getInfos().getRepositoryName();
+ indexerInstance.start(repositoryName,
harvestConf.getCollection());
List idList =
storage.getORIIdentifersReIndex(harvestConf.getId(), repositoryID , from);
for(String ori_id : idList){
lastRecord =
idList.indexOf(ori_id) == idList.size()-1;
##############################################################################

et depuis tout fonctionne mieux.

À+

>
>
> François
>
>
> Mikael Le Bohec wrote:
>

>> Bonjour,
>>
>> j'ai un problème de ré-indexation complète dans le module de
>> moissonnage :
>>
>> Je vais prendre l'exemple de l'entrepôt de Toulouse pour expliquer le
>> problème.
>>
>> On a comme infos :
>> INP Toulouse Theses
>> ethesis.inp-toulouse.fr
>>
>> J'ai un vocabulaire statique qui fait la correspondance pour le
>> module de recherche.
>>
>>
>> INP Toulouse Theses
>>

>>
>> Donc quand je fait le moissonage les fiches sont indexées sur le
>> repositoryName "INP Toulouse Theses".
>>
>> À la fin de la moisson je relance mon index pour ne pas attendre la
>> fin du cache et du coup je vois apparaître mes résultats dans la
>> partie "Entrepôts OAI".
>>
>> Jusque là rien d'anormal.
>>
>> Viens ensuite la partie ou je m'amuse à supprimer complètement mon
>> index.
>> Je fait donc un "rm" du répertoire indexes/index/ ; relance le module
>> d'indexation puis via le bouton "Tout ré-indexer" du module de
>> moissonnage je recrée l'index.
>> J'observe du côté serveur que l'index a bien été entièrement
>> reconstruit, donc pas de problème de ce côté.
>> Je relance mon module d'indexation afin de voir la mise à jour dans
>> le module de recherche, et c'est là que le problème se pose.
>>
>> Pour l'entrepôt "INP Toulouse Theses" je n'ai plus aucune fiche.
>>
>> En jouant avec mon vocabulaire je me suis rendu compte que les fiches
>> ré-indexées ne sont plus indéxées sur le repositoryName comme lors du
>> moissonage mais sur le repositoryID.
>> Pour preuve, en modifiant mon vocabulaire comme-ci tout refonctionne
>> côté module de recherche :
>>
>>
>> ethesis.inp-toulouse.fr
>>

>>
>> Ai-je fait une mauvaise manipulation ou bien est-ce tout simplement
>> un bug?
>>
>> À+

>
>

--
Ce message a

francoisjannin
Mikael Le Bohec wrote:

> François Jannin a écrit :
>

>> Bonjour,
>>
>> Il y a un algo dans le moissonneur qui utilise le repositoryId s'il
>> est présent (car ce champs n'est pas obligatoire en OAI.), sinon le
>> repositoryName. (OAIStore::getIdentifyInfos)
>>
>> Sans doute le problème vient-il de là : la première moisson à été
>> faite avec le repositoryName et celle de reindexAll, avec le
>> repositoryId.
>> Je viens de regarder les différentes séquences, et à priori toutes
>> deux font appel au même circuit de récupération de cette info, donc
>> je ne vois pas d'où vient le décalage....
>> Je note donc ça dans un coin et regarderais de plus près dés que
>> j'aurai le temps.
>>
>> Merci encore pour cette remontée.

>
> Je viens de regarder d'un peu plus près et la ré-indexation passe par
> la fonction "reIndexAll" de la classe "HarvestServiceImpl".
>
> Dans cette fonction on fait appel à l'index via la ligne :
>
> "indexerInstance.start(repositoryID, harvestConf.getCollection());"
>
> Mais quand on regarde la définition de la fonction "start" de la
> classe "IndexerInvoker" il s'agit bien du repositoryName et non le
> repositoryID qui est demandé en entrée : "public boolean start(String
> repositoryName, String collectionName);"
>

Oui, mais à ce moment-là il faudrait également harmoniser avec la
méthode harvest, qui utilise le champ repositoryId, l'important étant
que ce soit toujours la même valeur qui soit utilisée, car c'est par
cette valeur que les fiches sont reliées à un entrepôt.

A+

> J'ai donc effectué une légère modification dans le code :
>
> ##############################################################################
>
> ===================================================================
> ---
> JavaSource/org/orioai/harvesting/domain/service/HarvestServiceImpl.java
> (révision 291)
> +++
> JavaSource/org/orioai/harvesting/domain/service/HarvestServiceImpl.java
> (copie de travail)
> @@ -413,7 +413,8 @@
> List storeList =
> harvestConf.getStoreList();
> for(OAIStoreConfig store : storeList){
> String repositoryID =
> store.getInfos().getRepositoryID();
> - indexerInstance.start(repositoryID,
> harvestConf.getCollection());
> + String repositoryName =
> store.getInfos().getRepositoryName();
> + indexerInstance.start(repositoryName,
> harvestConf.getCollection());
> List idList =
> storage.getORIIdentifersReIndex(harvestConf.getId(), repositoryID ,
> from);
> for(String ori_id : idList){
> lastRecord =
> idList.indexOf(ori_id) == idList.size()-1;
> ##############################################################################
>
>
> et depuis tout fonctionne mieux.
>
> À+
>

>>
>>
>> François
>>
>>
>> Mikael Le Bohec wrote:
>>

>>> Bonjour,
>>>
>>> j'ai un problème de ré-indexation complète dans le module de
>>> moissonnage :
>>>
>>> Je vais prendre l'exemple de l'entrepôt de Toulouse pour expliquer
>>> le problème.
>>>
>>> On a comme infos :
>>> INP Toulouse Theses
>>> ethesis.inp-toulouse.fr
>>>
>>> J'ai un vocabulaire statique qui fait la correspondance pour le
>>> module de recherche.
>>>
>>>
>>> INP Toulouse Theses
>>>

>>>
>>> Donc quand je fait le moissonage les fiches sont indexées sur le
>>> repositoryName "INP Toulouse Theses".
>>>
>>> À la fin de la moisson je relance mon index pour ne pas attendre la
>>> fin du cache et du coup je vois apparaître mes résultats dans la
>>> partie "Entrepôts OAI".
>>>
>>> Jusque là rien d'anormal.
>>>
>>> Viens ensuite la partie ou je m'amuse à supprimer complètement mon
>>> index.
>>> Je fait donc un "rm" du répertoire indexes/index/ ; relance le
>>> module d'indexation puis via le bouton "Tout ré-indexer" du module
>>> de moissonnage je recrée l'index.
>>> J'observe du côté serveur que l'index a bien été entièrement
>>> reconstruit, donc pas de problème de ce côté.
>>> Je relance mon module d'indexation afin de voir la mise à jour dans
>>> le module de recherche, et c'est là que le problème se pose.
>>>
>>> Pour l'entrepôt "INP Toulouse Theses" je n'ai plus aucune fiche.
>>>
>>> En jouant avec mon vocabulaire je me suis rendu compte que les
>>> fiches ré-indexées ne sont plus indéxées sur le repositoryName comme
>>> lors du moissonage mais sur le repositoryID.
>>> Pour preuve, en modifiant mon vocabulaire comme-ci tout refonctionne
>>> côté module de recherche :
>>>
>>>
>>> ethesis.inp-toulouse.fr
>>>

>>>
>>> Ai-je fait une mauvaise manipulation ou bien est-ce tout simplement
>>> un bug?
>>>
>>> À+

>>
>>
>>

>

--
Ce message a

mikaellebohec
François Jannin a écrit :

> Mikael Le Bohec wrote:
>

>> François Jannin a écrit :
>>

>>> Bonjour,
>>>
>>> Il y a un algo dans le moissonneur qui utilise le repositoryId s'il
>>> est présent (car ce champs n'est pas obligatoire en OAI.), sinon le
>>> repositoryName. (OAIStore::getIdentifyInfos)
>>>
>>> Sans doute le problème vient-il de là : la première moisson à été
>>> faite avec le repositoryName et celle de reindexAll, avec le
>>> repositoryId.
>>> Je viens de regarder les différentes séquences, et à priori toutes
>>> deux font appel au même circuit de récupération de cette info, donc
>>> je ne vois pas d'où vient le décalage....

Je viens de trouver la zone exacte du problème :

Dans OAIStore::processAddOrUpdate on a =>
indexer.start(infos.getRepositoryName(), collection);
Dans OAIStore::processPersistentDeleted on a =>
indexer.start(infos.getRepositoryID(), collection);
Dans HarvestServiceImpl::reIndexAll on a =>
indexerInstance.start(repositoryID, harvestConf.getCollection());

L'indexation est donc bien faite tantôt sur le repositoryName tantôt sur
le repositoryID.
Seul l'ajout de fiche via le moissonnage utilise le repositoryName.
Il suffit donc d'harmoniser l'ensemble pour utiliser le repositoryName
dans les trois cas puisque c'est un attribut obligatoire.

À+

>>> Je note donc ça dans un coin et regarderais de plus près dés que
>>> j'aurai le temps.
>>>
>>> Merci encore pour cette remontée.

>>
>> Je viens de regarder d'un peu plus près et la ré-indexation passe par
>> la fonction "reIndexAll" de la classe "HarvestServiceImpl".
>>
>> Dans cette fonction on fait appel à l'index via la ligne :
>>
>> "indexerInstance.start(repositoryID, harvestConf.getCollection());"
>>
>> Mais quand on regarde la définition de la fonction "start" de la
>> classe "IndexerInvoker" il s'agit bien du repositoryName et non le
>> repositoryID qui est demandé en entrée : "public boolean start(String
>> repositoryName, String collectionName);"
>>

> Oui, mais à ce moment-là il faudrait également harmoniser avec la
> méthode harvest, qui utilise le champ repositoryId, l'important étant
> que ce soit toujours la même valeur qui soit utilisée, car c'est par
> cette valeur que les fiches sont reliées à un entrepôt.
>
> A+
>

>> J'ai donc effectué une légère modification dans le code :
>>
>> ##############################################################################
>>
>> ===================================================================
>> ---
>> JavaSource/org/orioai/harvesting/domain/service/HarvestServiceImpl.java
>> (révision 291)
>> +++
>> JavaSource/org/orioai/harvesting/domain/service/HarvestServiceImpl.java
>> (copie de travail)
>> @@ -413,7 +413,8 @@
>> List storeList =
>> harvestConf.getStoreList();
>> for(OAIStoreConfig store : storeList){
>> String repositoryID =
>> store.getInfos().getRepositoryID();
>> - indexerInstance.start(repositoryID,
>> harvestConf.getCollection());
>> + String repositoryName =
>> store.getInfos().getRepositoryName();
>> + indexerInstance.start(repositoryName,
>> harvestConf.getCollection());
>> List idList =
>> storage.getORIIdentifersReIndex(harvestConf.getId(), repositoryID ,
>> from);
>> for(String ori_id : idList){
>> lastRecord =
>> idList.indexOf(ori_id) == idList.size()-1;
>> ##############################################################################
>>
>>
>> et depuis tout fonctionne mieux.
>>
>> À+
>>

>>>
>>>
>>> François
>>>
>>>
>>> Mikael Le Bohec wrote:
>>>

>>>> Bonjour,
>>>>
>>>> j'ai un problème de ré-indexation complète dans le module de
>>>> moissonnage :
>>>>
>>>> Je vais prendre l'exemple de l'entrepôt de Toulouse pour expliquer
>>>> le problème.
>>>>
>>>> On a comme infos :
>>>> INP Toulouse Theses
>>>> ethesis.inp-toulouse.fr
>>>>
>>>> J'ai un vocabulaire statique qui fait la correspondance pour le
>>>> module de recherche.
>>>>
>>>>
>>>> INP Toulouse Theses
>>>>

>>>>
>>>> Donc quand je fait le moissonage les fiches sont indexées sur le
>>>> repositoryName "INP Toulouse Theses".
>>>>
>>>> À la fin de la moisson je relance mon index pour ne pas attendre la
>>>> fin du cache et du coup je vois apparaître mes résultats dans la
>>>> partie "Entrepôts OAI".
>>>>
>>>> Jusque là rien d'anormal.
>>>>
>>>> Viens ensuite la partie ou je m'amuse à supprimer complètement mon
>>>> index.
>>>> Je fait donc un "rm" du répertoire indexes/index/ ; relance le
>>>> module d'indexation puis via le bouton "Tout ré-indexer" du module
>>>> de moissonnage je recrée l'index.
>>>> J'observe du côté serveur que l'index a bien été entièrement
>>>> reconstruit, donc pas de problème de ce côté.
>>>> Je relance mon module d'indexation afin de voir la mise à jour dans
>>>> le module de recherche, et c'est là que le problème se pose.
>>>>
>>>> Pour l'entrepôt "INP Toulouse Theses" je n'ai plus aucune fiche.
>>>>
>>>> En jouant avec mon vocabulaire je me suis rendu compte que les
>>>> fiches ré-indexées ne sont plus indéxées sur le repositoryName
>>>> comme lors du moissonage mais sur le repositoryID.
>>>> Pour preuve, en modifiant mon vocabulaire comme-ci tout
>>>> refonctionne côté module de recherche :
>>>>
>>>>
>>>> ethesis.inp-toulouse.fr
>>>>

>>>>
>>>> Ai-je fait une mauvaise manipulation ou bien est-ce tout simplement
>>>> un bug?
>>>>
>>>> À+

>>>
>>>
>>>

>>

>

--
Ce message a

francoisjannin
Mikael Le Bohec wrote:

> François Jannin a écrit :
>

>> Mikael Le Bohec wrote:
>>

>>> François Jannin a écrit :
>>>

>>>> Bonjour,
>>>>
>>>> Il y a un algo dans le moissonneur qui utilise le repositoryId
>>>> s'il est présent (car ce champs n'est pas obligatoire en OAI.),
>>>> sinon le repositoryName. (OAIStore::getIdentifyInfos)
>>>>
>>>> Sans doute le problème vient-il de là : la première moisson à été
>>>> faite avec le repositoryName et celle de reindexAll, avec le
>>>> repositoryId.
>>>> Je viens de regarder les différentes séquences, et à priori toutes
>>>> deux font appel au même circuit de récupération de cette info, donc
>>>> je ne vois pas d'où vient le décalage....

>>>

> Je viens de trouver la zone exacte du problème :
>
> Dans OAIStore::processAddOrUpdate on a =>
> indexer.start(infos.getRepositoryName(), collection);
> Dans OAIStore::processPersistentDeleted on a =>
> indexer.start(infos.getRepositoryID(), collection);
> Dans HarvestServiceImpl::reIndexAll on a =>
> indexerInstance.start(repositoryID, harvestConf.getCollection());
>
> L'indexation est donc bien faite tantôt sur le repositoryName tantôt
> sur le repositoryID.
> Seul l'ajout de fiche via le moissonnage utilise le repositoryName.
> Il suffit donc d'harmoniser l'ensemble pour utiliser le repositoryName
> dans les trois cas puisque c'est un attribut obligatoire.
>

Merci d'avoir trouvé la brebis galeuse ;)
J'ai repercuté ces modifs sur le SVN (trunk et branche 1..0) en
attendant de repercuter ces corrections dans la prochaine version taggée.

A+

> À+
>

>>>> Je note donc ça dans un coin et regarderais de plus près dés que
>>>> j'aurai le temps.
>>>>
>>>> Merci encore pour cette remontée.

>>>
>>>
>>> Je viens de regarder d'un peu plus près et la ré-indexation passe
>>> par la fonction "reIndexAll" de la classe "HarvestServiceImpl".
>>>
>>> Dans cette fonction on fait appel à l'index via la ligne :
>>>
>>> "indexerInstance.start(repositoryID, harvestConf.getCollection());"
>>>
>>> Mais quand on regarde la définition de la fonction "start" de la
>>> classe "IndexerInvoker" il s'agit bien du repositoryName et non le
>>> repositoryID qui est demandé en entrée : "public boolean
>>> start(String repositoryName, String collectionName);"
>>>

>> Oui, mais à ce moment-là il faudrait également harmoniser avec la
>> méthode harvest, qui utilise le champ repositoryId, l'important étant
>> que ce soit toujours la même valeur qui soit utilisée, car c'est par
>> cette valeur que les fiches sont reliées à un entrepôt.
>>
>> A+
>>

>>> J'ai donc effectué une légère modification dans le code :
>>>
>>> ##############################################################################
>>>
>>> ===================================================================
>>> ---
>>> JavaSource/org/orioai/harvesting/domain/service/HarvestServiceImpl.java
>>> (révision 291)
>>> +++
>>> JavaSource/org/orioai/harvesting/domain/service/HarvestServiceImpl.java
>>> (copie de travail)
>>> @@ -413,7 +413,8 @@
>>> List storeList =
>>> harvestConf.getStoreList();
>>> for(OAIStoreConfig store : storeList){
>>> String repositoryID =
>>> store.getInfos().getRepositoryID();
>>> - indexerInstance.start(repositoryID,
>>> harvestConf.getCollection());
>>> + String repositoryName =
>>> store.getInfos().getRepositoryName();
>>> +
>>> indexerInstance.start(repositoryName, harvestConf.getCollection());
>>> List idList =
>>> storage.getORIIdentifersReIndex(harvestConf.getId(), repositoryID ,
>>> from);
>>> for(String ori_id : idList){
>>> lastRecord =
>>> idList.indexOf(ori_id) == idList.size()-1;
>>> ##############################################################################
>>>
>>>
>>> et depuis tout fonctionne mieux.
>>>
>>> À+
>>>

>>>>
>>>>
>>>> François
>>>>
>>>>
>>>> Mikael Le Bohec wrote:
>>>>

>>>>> Bonjour,
>>>>>
>>>>> j'ai un problème de ré-indexation complète dans le module de
>>>>> moissonnage :
>>>>>
>>>>> Je vais prendre l'exemple de l'entrepôt de Toulouse pour expliquer
>>>>> le problème.
>>>>>
>>>>> On a comme infos :
>>>>> INP Toulouse Theses
>>>>> ethesis.inp-toulouse.fr
>>>>>
>>>>> J'ai un vocabulaire statique qui fait la correspondance pour le
>>>>> module de recherche.
>>>>>
>>>>>
>>>>> INP Toulouse Theses
>>>>>

>>>>>
>>>>> Donc quand je fait le moissonage les fiches sont indexées sur le
>>>>> repositoryName "INP Toulouse Theses".
>>>>>
>>>>> À la fin de la moisson je relance mon index pour ne pas attendre
>>>>> la fin du cache et du coup je vois apparaître mes résultats dans
>>>>> la partie "Entrepôts OAI".
>>>>>
>>>>> Jusque là rien d'anormal.
>>>>>
>>>>> Viens ensuite la partie ou je m'amuse à supprimer complètement mon
>>>>> index.
>>>>> Je fait donc un "rm" du répertoire indexes/index/ ; relance le
>>>>> module d'indexation puis via le bouton "Tout ré-indexer" du module
>>>>> de moissonnage je recrée l'index.
>>>>> J'observe du côté serveur que l'index a bien été entièrement
>>>>> reconstruit, donc pas de problème de ce côté.
>>>>> Je relance mon module d'indexation afin de voir la mise à jour
>>>>> dans le module de recherche, et c'est là que le problème se pose.
>>>>>
>>>>> Pour l'entrepôt "INP Toulouse Theses" je n'ai plus aucune fiche.
>>>>>
>>>>> En jouant avec mon vocabulaire je me suis rendu compte que les
>>>>> fiches ré-indexées ne sont plus indéxées sur le repositoryName
>>>>> comme lors du moissonage mais sur le repositoryID.
>>>>> Pour preuve, en modifiant mon vocabulaire comme-ci tout
>>>>> refonctionne côté module de recherche :
>>>>>
>>>>>
>>>>> ethesis.inp-toulouse.fr
>>>>>

>>>>>
>>>>> Ai-je fait une mauvaise manipulation ou bien est-ce tout
>>>>> simplement un bug?
>>>>>
>>>>> À+

>>>>
>>>>
>>>>
>>>>

>>>

>>

>
>

--
Ce message a

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur « Enregistrer les paramètres » pour activer vos changements.
Sujet clos