sql 查询拆分句子并搜索每个单词的结果

sql query to split a sentence and search for result on each word

我收到来自 eBay 的关于类别名称的 API 回复,即:"E Liquids & E Cig Cartridges" 问题是,我无法搜索 "E" 会在我自己的类别列表中返回太多结果,所以我必须扫描句子中大于 3 个字母甚至 4 个字母的单词,我需要搜索每个单词然后查找我自己的类别列表以查看哪个最适合 API 调用中的未知句子并设置最佳匹配的类别,我不是 sql 向导因此我的问题。我会想象创建一个临时 sql 函数然后循环直到找到结果。预先感谢您的帮助。

这是实现此目的的方法:

/*
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);

如果我遗漏了什么,请告诉我,

此致,

詹姆斯