将字符串拆分为其子字

时间:2014-07-24 13:32:47

标签: sql split word string-matching substring


每个字母都有一个值
a b c d e f g h i j k l m n o p q r s t u v w x y z
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26


表A
字符串长度值子字
exampledomain 13 132#example-domain#example-do-main#
信用卡10 85#credit-card#credit-car-d#


表B
单词长度值
例7 76
做2 19
主4 37 域6 56
信用证6 59
卡4 26
车3 22
d 1 4


解释
TableA具有基于千分之一行的字符串,并且它将是新增的每天100k行到tableA 并且“字符串”列也没有空格

TableB有基于milion行的单词,1-2个语言中有每个字母和单词

我想做什么
我想将TableA中的字符串拆分为其子字,如示例中所示; “creditcard”我在TableB中搜索所有单词并尝试找到哪些单词一起匹配字符串

我做了什么,无法解决我的问题
我拿了字符串并用 INNER JOINS 加入TableB我做了2-3次INNER JOINS,因为也可以有3word 4word字符串,并且工作!!但即使用100-200弦也需要太多时间。猜猜我想每天100k这么做???

现在我尝试做什么
如上所述,我给每个通讯都给了价值,
一个接一个地拿出琴弦,从包括字母开始,我算上弦的价值。
对于TableB中的单词也一样。
现在我将TableA中的每个字符串和TableB中的每个字符串都包含其VALUES ..
_
1-我将取其字符串,长度和值(例如;信用卡 - 10 - 85)
2-并在TableB中进行搜索,找到它们组合在一起的可能单词,其SUM(长度)和SUM(值)匹配字符串长度和值,并将theese的可能性写入新列。
最后,即使它们的长度和值的总和相互匹配,也可能存在一些与整个字符串不匹配的可能性,我将消除那些(示例; “doma-in”可以 “moda-in”也是如此,它们的长度和值是相同的,但不是相同的单词)


我不知道但是,我猜这个值方法我可以解决时间问题??? ,或者如果有其他方法可以做到这一点,我将非常感激你的建议 感谢

1 个答案:

答案 0 :(得分:0)

您可以通过查看下一个字母来尝试递归地找到解决方案。例如,单词 DOMAIN

  1. D - 没有
  2. DO - 是一个字!
    1. M - 没有
    2. MA - 没有
    3. MAI - 没有
    4. MAIN - 是一个字!
      1. 没有更多的信件 - > DO + MAIN
  3. DOM - 是一个字!
    1. A - 否
    2. AI - 没有
    3. AIN - 没有
    4. 没有结果完成
  4. DOMA - 没有
  5. DOMAI - 没有
  6. DOMAIN - 是一个字!
    1. 没有更多的信件 - >的 DOMAIN