Recherche au sein d'artefacts indexés par XML

La recherche du contenu indexé par XML s'effectue à l'aide de règles d'indexation définissant le texte à rechercher sous la forme elementName[attributeName='attributeValue']. Le texte à rechercher est alors ajouté en tant que champ de recherche d'attribut dans RAMAssetQueryBuilder. Les résultats peuvent être extraits via les ArtifactSearchResults résultants. Exemples de formats de recherche au sein de données XML.
  • recherche sans élément : attributeName='attributeValue'
  • recherche de plusieurs attributs définis dans un même élément : elementName[attributeName1='attributeValue1' attributeName2='attributeValue2]
  • recherche de l'intégralité d'un chemin : elementPath1/elementPath2[attributeName='attributeValue']
  • recherche de texte au sein d'un élément : elementName[text()='textValue']
  • Il est également possible d'utiliser le caractère générique lors de la recherche de documents XML : elementName[attributeName='attribute*']
				 //L'on effectue une recherche dans du contenu indexé par XML
		 		 RAMAssetQueryBuilder query = new RAMAssetQueryBuilder(session);
				 
		 		 //La recherche au sein d'artefacts doit être activée
		 		 query.setSearchModes(SearchQuery.SEARCH_WITHIN_ARTIFACTS_FLAG);
		 		 
		 		 //Texte à rechercher dans les index XML sous la forme elementName[attributeName='attributeValue']
		 		 String searchText = "wsdl:definitions[targetNamespace='*example*']";
		 		 query.addQueryField(query.QUERY_FIELD_ATTRIBUTE, searchText);
		 		 
		 		 //L'on effectue la recherche
		 		 SearchResult result = session.getAssets(query);
		 		 
		 		 //L'on récupère la liste des actifs correspondants
		 		 AssetSearchResult[] results = result.getAssetSearchResults();
		 		 
		 		 for(int i = 0; i < results.length; i++){
		 		 		 //Pour chaque actif correspondant, récupération de la liste des artefacts correspondant
		 		 		 ArtifactSearchResult[] artifactMatches = results[i].getMatchingArtifacts();
		 		 		 
		 		 		 for(int j = 0; j < artifactMatches.length; j++){
		 		 		 		 //Pour chaque artefact correspondant, récupération des index XML correspondant
		 		 		 		 String[] xmlIndexMatches = artifactMatches[j].getMatches();
		 		 		 		 
		 		 		 		 for(int k = 0; k < xmlIndexMatches.length; k++){
		 		 		 		 		 System.out.println("Match = " + xmlIndexMatches[k]);
		 		 		 		 }
		 		 		 }
				 }

Commentaires