slam:indexation_de_donnees_non_structurees

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
slam:indexation_de_donnees_non_structurees [2025/02/12 22:03] – [Indexation de données non structurées] dthevenotslam:indexation_de_donnees_non_structurees [2025/02/20 09:41] (Version actuelle) – [Indexer ces données dans MeiliSearch] dthevenot
Ligne 12: Ligne 12:
  
 La recherche sur MeiliSearch permet : La recherche sur MeiliSearch permet :
-  * D'interroger plus rapidement les entreprises déjà indexées, sans refaire un appel API.+  * D'interroger plus rapidement les document déjà indexées
   * De rechercher avec plus de flexibilité (filtres, tolérance aux fautes, suggestions, etc.).   * De rechercher avec plus de flexibilité (filtres, tolérance aux fautes, suggestions, etc.).
   * De tester des requêtes différentes (exemple : "boulangeries artisanales" après avoir indexé toutes les boulangeries).   * De tester des requêtes différentes (exemple : "boulangeries artisanales" après avoir indexé toutes les boulangeries).
Ligne 24: Ligne 24:
  
 ===== Utilisation : Exemple simple ===== ===== Utilisation : Exemple simple =====
 +==== Envoi des données ====
 +=== Avec curl ===
 Indexer des documents (titres de livres) : On va créer un index nommé **books** et y ajouter des documents. Indexer des documents (titres de livres) : On va créer un index nommé **books** et y ajouter des documents.
- 
-==== Envoi des données ==== 
- 
-Utilise curl ou Postman : 
 <code> <code>
 curl -X POST 'http://localhost:7700/indexes/books/documents' -H 'Content-Type:application/json' --data-binary '[{"id":1,"title":"petit prince"},{"id":2,"title":"Le soulier de satin"},{"id":3,"title":"Les Misérables"},{"id":4,"title":"1984"}]' curl -X POST 'http://localhost:7700/indexes/books/documents' -H 'Content-Type:application/json' --data-binary '[{"id":1,"title":"petit prince"},{"id":2,"title":"Le soulier de satin"},{"id":3,"title":"Les Misérables"},{"id":4,"title":"1984"}]'
 </code> </code>
-==== Rechercher un document ====+ 
 +__Puis rechercher un document__
 On va chercher tous les livres contenant "Prince" : On va chercher tous les livres contenant "Prince" :
 <code> <code>
Ligne 42: Ligne 41:
 </code> </code>
 MeiliSearch retourne les documents correspondants avec une recherche full-text rapide ! MeiliSearch retourne les documents correspondants avec une recherche full-text rapide !
 +=== Avec Postman (conseillée)===
 +Indexer des documents (titres de livres) : On va créer un index nommé **movies** et y ajouter des documents.
 +  - installer Postman
 +  - Vérifier que Meilisearch fonctionne : Méthode : **GET**(recherche) URL : http://localhost:7700/health
 +    * Attendu : { "status": "available" }
 +  - Créer un index (si non existant) : Méthode : **POST**(création) URL : http://localhost:7700/indexes
 +    * **Headers** (Key:Value):
 +      * **Content-Type**: application/json
 +      * **Body (raw->JSON)** :<code>
 +{
 +  "uid": "movies",
 +  "primaryKey": "id"
 +}</code>
 +  - Indexer des documents : Méthode : **POST** URL : http://localhost:7700/indexes/movies/documents **Headers** : **Content-Type**: application/json
 +    * **Body (raw->JSON)** :<code>  
 +[
 +  {
 +    "id": 1,
 +    "title": "Inception",
 +    "genre": "Sci-Fi"
 +  },
 +  {
 +    "id": 2,
 +    "title": "The Dark Knight",
 +    "genre": "Action"
 +  }
 +]
 +</code>
 +  - Rechercher des documents contenant "inception" : Méthode : **GET** URL : http://localhost:7700/indexes/movies/search?q=inception
  
 ===== Utilisation d'un jeu de données Open Data ===== ===== Utilisation d'un jeu de données Open Data =====
Ligne 64: Ligne 92:
 🔗 https://recherche-entreprises.api.gouv.fr/ 🔗 https://recherche-entreprises.api.gouv.fr/
  
-Exemple de requête pour chercher une entreprise contenant "boulangerie" dans son nom :+Exemple de requête pour chercher les documents contenant "boulangerie" :
  
 ''curl -X GET "https://recherche-entreprises.api.gouv.fr/search?q=boulangerie&per_page=5"'' ''curl -X GET "https://recherche-entreprises.api.gouv.fr/search?q=boulangerie&per_page=5"''
  Cela retourne une liste d'entreprises avec leurs infos (nom, SIRET, activité, adresse, etc.).  Cela retourne une liste d'entreprises avec leurs infos (nom, SIRET, activité, adresse, etc.).
  
- +**Le faire avec Postman.** 
-==== Indexer ces données dans MeiliSearch ====+==== Indexer des données dans MeiliSearch ====
 On va récupérer ces données et les envoyer dans MeiliSearch en format JSON. On va récupérer ces données et les envoyer dans MeiliSearch en format JSON.
 +<bootnote critical>pb entre serveur php vagrant en localhost:2080 ou ip 10.0.2.15 et docker milisearch en localhost:7700 ou ip 172.17.0.2, vérifier le parefeu, les ports...</bootnote>
 <code> <code>
 <?php <?php
  
 // 1/Fonction pour récupérer les entreprises depuis l'API Recherche d'entreprises // 1/Fonction pour récupérer les entreprises depuis l'API Recherche d'entreprises
-function fetchEntreprises($query, $limit = 10) {+function rechercherEntreprises($query, $limit) {
     $url = "https://recherche-entreprises.api.gouv.fr/search?q=" . urlencode($query) . "&per_page=" . $limit;     $url = "https://recherche-entreprises.api.gouv.fr/search?q=" . urlencode($query) . "&per_page=" . $limit;
          
Ligne 109: Ligne 137:
 // 3/Exécution : récupérer et indexer les entreprises // 3/Exécution : récupérer et indexer les entreprises
 $query = "boulangerie"; // Modifier la recherche ici $query = "boulangerie"; // Modifier la recherche ici
-$entreprises = fetchEntreprises($query, 10);+$entreprises = rechercherEntreprises($query, 10);
  
 $formattedData = array_map(function ($entreprise) { $formattedData = array_map(function ($entreprise) {
Ligne 131: Ligne 159:
      -H 'Content-Type: application/json' \      -H 'Content-Type: application/json' \
      --data-binary '{      --data-binary '{
-         "q": "boulangerie"+         "q": "boulangerie artisanale"
      }'      }'
 </code> </code>
-Cela retournera les entreprises ou le mot "boulangerie" apparaît.+Cela retournera les entreprises ou le mot "boulangerie artisanal" apparaît.
 ==== A tester ==== ==== A tester ====
   * Ajouter plus de données (augmenter limit=100).   * Ajouter plus de données (augmenter limit=100).
  • slam/indexation_de_donnees_non_structurees.1739394204.txt.gz
  • Dernière modification : 2025/02/12 22:03
  • de dthevenot