小编Ila*_*ila的帖子

在MySQL中插入时检查和阻止类似的字符串

简要信息

我有3张桌子:

组:

id
name
Run Code Online (Sandbox Code Playgroud)

SetItem:

set_id
item_id
position
Run Code Online (Sandbox Code Playgroud)

TEMPSET:

id
Run Code Online (Sandbox Code Playgroud)

我有一个从Item表生成新的随机组合的函数.基本上,总是在成功生成之后,我在Set表中创建一个新行,获取它的id并将所有项ID添加到SetItem表中.

问题

每次生成新组合之前,我都会截断TempSet表格,将新项目ID填入此表格,并通过与SetItem表格中的先前组合进行比较来检查相似性百分比.如果新组合相似度大于或等于30%,我需要阻止这种组合并重新生成新的组合.

相似性意味着 - 在先前生成的组合上存在元素.所以,这个想法是:

如果在一些先前生成的集合上重复了多于3个新生成集合的元素,则阻止它并尝试生成另一个组合.

这是生成新组合的函数:

  CREATE DEFINER = `root` @`localhost` FUNCTION `gen_uniq_perm_by_kw` (
    comboSize INT ( 5 ),
    tries INT ( 3 ) 
    ) RETURNS text CHARSET utf8 SQL SECURITY INVOKER BEGIN
    iterat :
    LOOP
        DELETE 
        FROM
            `TempSet`;
        INSERT INTO `TempSet` ( `id` ) (
            SELECT
                `i`.`id` 
            FROM
                `Item` AS `i`
            ORDER BY
                RAND( ) 
                LIMIT …
Run Code Online (Sandbox Code Playgroud)

mysql sql hash combinations similarity

6
推荐指数
1
解决办法
279
查看次数

标签 统计

combinations ×1

hash ×1

mysql ×1

similarity ×1

sql ×1