Comparaison de chaine en php (type match against sql)

Comparaison de chaine en php (type match against sql) - PHP - Programmation

Marsh Posté le 15-11-2023 à 15:46:37    

Bonjour,
Je travailles sur un outil pour aider la conversion de fichier d'export produit csv entre Magento (source) et Woocommerce (destination).
J'ai un petit soucis pour essayer de magiquement associé d'ancienne catégories avec des nouvelles.
Par exemple à l'heure actuelle dans Magento j'ai un produit associé à la catégorie "truc/bidule/machin", ma moulinette le convertit bien en "truc > bidule > machin" mais cette catégorie n'existe pas dans le nouveau site.
Quasiment tout les premier niveaux sont différent, par exemple il faudrait que sa match avec FOO > bar > bidule > machin.
Idéalement je voudrais le meilleur match ainsi que le score car de toute façon ma moulinette va être utilisé par quelqu'un qui va vérifier la conversion avant de générer le csv d'import.
 
Je sais le faire en sql mais ça m’embête un peu de faire une requête SQL par ligne du csv, je voulais voir si y avait pas un algo php (ou un outil en ligne de commande via system(), je suis sur un dédié et j'ai ma liste de catégorie "possible" dans un csv).
Merci d'avance pour vos pistes de recherches, j'ai demandé à Google mais je ne doit pas avoir les bons mots clé, je ne trouves rien de pertinent...


---------------
D3
Reply

Marsh Posté le 15-11-2023 à 15:46:37   

Reply

Marsh Posté le 15-11-2023 à 16:10:48    

Jouer avec des distances type jaro winkler?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-11-2023 à 16:12:56    

en "natif" php t'as levenshtein par exemple : https://www.php.net/manual/fr/function.levenshtein.php


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-11-2023 à 16:15:45    

Pas mieux :o

 

Si tu nous disais comment tu t'y prends en SQL*, on pourrait être davantage précis :jap:

Message cité 1 fois
Message édité par Ydalb le 15-11-2023 à 16:15:58

---------------
:o
Reply

Marsh Posté le 15-11-2023 à 16:24:38    

Pour un truc qui ressemblait vaguement j'avais fait du jaro winkler, stocké les "candidats", puis une interface basique pour faire passer à la main quelqu'un sur tout ce qui était en-dessous d'un certain seuil de certitude et valider ou non la transformation.  
Et une fois le process manuel passé moulinette sur le résultat.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-11-2023 à 18:00:40    


 :love:  

Ydalb a écrit :

Pas mieux :o
 
Si tu nous disais comment tu t'y prends en SQL*, on pourrait être davantage précis :jap:


Ben avec un colonne indexé FULLTEXT et un WHERE MATCH (col) AGAINST ('search string');
Ça date un peu mais je me souvient que ça marchait plutôt bien... ^^

skeye a écrit :

Pour un truc qui ressemblait vaguement j'avais fait du jaro winkler, stocké les "candidats", puis une interface basique pour faire passer à la main quelqu'un sur tout ce qui était en-dessous d'un certain seuil de certitude et valider ou non la transformation.  
Et une fois le process manuel passé moulinette sur le résultat.


Je vais pré-choisir le best match dans le select et afficher le score à coté, en vert si < 10, orange entre 10 et 20 et rouge au dessus.
Après quelques tests ça me semble déjà pas trop mal fonctionner...
 
Merci à vous !


---------------
D3
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed