C# 用等价词替换句子

C# 用等价词替换句子,c#,sql,regex,algorithm,replace,C#,Sql,Regex,Algorithm,Replace,我想用对等的词来换句子; 例如: root -> put: set -> returns: switch -> between: among -> paragraphs: among paragraphs -> paragraphs: sections 参考数据库: 数据库有1000000条记录; 我可以从数据库中获取所有行,并将所有行都转换为文本。这是愚蠢的方法。 我需要一种将句子输入数据库的方法如何选择包含句子的

我想用对等的词来换句子; 例如:

root
    -> put: set
    -> returns: switch
    -> between: among
        -> paragraphs: among paragraphs
    -> paragraphs: sections
参考数据库:

数据库有1000000条记录; 我可以从数据库中获取所有行,并将所有行都转换为文本。这是愚蠢的方法。 我需要一种将句子输入数据库的方法如何选择包含句子的行

我有一种方法,比如用空格分割所有文本,然后尝试在数据库中进行选择。但它会传递带有空白的长文本。个案数目;;它将搜索它像,数量,案件,与单独的搜索。。。和记录将不再有用。

您可以在sql server中使用替换功能

SELECT REPLACE('abcdefghicde','cde','xxx') GO
这将用xxx替换cde

在您的应用程序中,sql可能

UPDATE tablename set col=REPLACE(col,' put ',' set ') //Please notice there are 2 ' ' beside the word

您可以在一个数据库中组织替换数据库。所有单字表达式都位于第一级。多单词表达式存储为表达式中前面单词的后代。在您的示例中:

root
    -> put: set
    -> returns: switch
    -> between: among
        -> paragraphs: among paragraphs
    -> paragraphs: sections
词根将是一本单词词典。每个节点都有一个子字典(在大多数情况下为空)和一个替换值。替换在中间词中可能为空,例如在ìn->this->case中,这不会有替换,因为in->this本身不是有效的替换

把你的句子分成两半,然后反复读单词。如果您发现可能的更换开始,请遵循trie并确定此位置最长的更换时间。替换它并从下一个单词开始继续迭代

 between you and me -> among you and me
 between other paragraphs -> among other sections
 between paragraphs -> among paragraphs
拆分单词时,保持单词之间的空格和标点符号,仅当单词之间没有标点符号时,才跟随trie节点,以便生成类似

 There must be something in between; paragraphs 1 and 2 seem to indicate that.
他被正确对待

如果您有许多句子需要用同一数据库中的替换项替换,那么这种方法应该是有效的。数据库trie只能构建一次。如果您只有几句话要替换,或者数据库经常更改,这不是一个好方法。

请阅读MatchEvaluator:
 There must be something in between; paragraphs 1 and 2 seem to indicate that.