J'ai une réponse API d'eBay sur un categoryName à savoir: "E liquides & E Cig Cartridges" Le problème est, je ne peux pas chercher "E" ramènerait trop de résultats sur ma propre liste de catégories, donc je devrais scanner la phrase pour des mots plus grands que 3 lettres ou même 4, je dois chercher chaque mot puis chercher ma propre liste de catégories pour voir laquelle correspond le mieux à la phrase inconnue du Appel API et définir la catégorie à la meilleure correspondance, je ne suis pas un assistant sql d'où ma question. J'imagine un créer une fonction SQL temporaire puis boucle jusqu'à ce qu'un résultat soit trouvé. Merci d'avance pour toute aide.sql requête pour diviser une phrase et rechercher un résultat sur chaque mot
Répondre
est ici un moyen d'y arriver:
/*
CREATE TABLE testData(result INT, term CHAR(255));
INSERT INTO testData VALUES
(1, 'Cig'),
(2, 'Liquids'),
(3, 'E');
*/
SET @NGram = 'E Liquids & E Cig Cartridges';
DELIMITER $
DROP PROCEDURE IF EXISTS parseNGram$
CREATE PROCEDURE parseNGram(VNGram TEXT)
BEGIN
DECLARE VN, VLoopPos, VGramLength INTEGER;
DECLARE VGram CHAR(255);
SET VN = CHAR_LENGTH(VNGram) - CHAR_LENGTH(REPLACE(VNGram, ' ', '')) + 1;
SET VLoopPos = 0;
searchLoop: WHILE VLoopPos < VN DO
SET VGramLength = LOCATE(' ', VNGram);
SET VGram = LEFT(VNGram, VGRamLength);
SET VNGram = RIGHT(VNGram, CHAR_LENGTH(VNGram) - VGramLength);
IF CHAR_LENGTH(VGram) > 1 THEN
# Do someting with the required token, here is an example
SELECT result FROM testData WHERE term = VGram LIMIT 1;
LEAVE searchLoop;
END IF;
END WHILE;
END$
DELIMITER ;
CALL parseNGram(@NGram);
Laissez-moi savoir si je raté quelque chose,
Cordialement,
James
cela fonctionnerait-il dans MySQL en utilisant php? mon appel actuel utilise pdo $ stmt = $ pdo-> query ("SELECT AUTO_INCREMENT comme id FROM information_schema.tables WHERE nom_table = 'listings'"); – smashit
Cette requête est exécutable mais je ne vois pas comment cela correspond à votre question. Comme Barmar souligne que ce problème pourrait probablement être plus facilement manipulé en utilisant PHP mais comme la question posée pour une solution MySQL j'ai donné la réponse ci-dessus. Si vous avez besoin d'une réponse orientée PHP, je suggère de reposter. –
Oui probablement sur compliqué pour mes besoins, je vais voir ce que je peux faire exploser la phrase et utiliser PHP comme vous l'avez dit. Je vous remercie – smashit
Vous ne pouvez pas le faire facilement dans SQL, diviser la chaîne en PHP. – Barmar
Oui, merci, je vais donner il ya, seul problème est f ma requête renvoie 6 résultats, lequel alors? supposons que son choix d'utilisateur plus de mise en œuvre .. thxs – smashit