我想用相同的词来改变句子; 例如:
参考数据库:
put <-> set
returns <-> switch
between <-> among
paragraphs <-> null
between paragraphs <-> among paragraphs
句子:
在段落之间添加回报
替换句子:
设置段落之间的切换
是;寻找和替换容易和罚款。 但问题是:我有&#34; 段落&#34;和&#34;段落之间的 &#34;在记录中。如何在短片之前搜索和替换长文本?性能非常重要,因为参考数据库可能超过100万行。
目前正在使用:实体框架,C#,MVC,SQL Server 2014
任何帮助都会很棒。感谢。
句:
string str = "The number of cases in the Ebola outbreak passes 10,000, with 4,922 deaths, the World Health Organization's latest report says."
数据库有1,000,000条记录; 我可以从数据库中获取所有行,并将所有行预设为文本。这是一种愚蠢的方法。 我需要一种方法来句子到数据库如何选择带句子的行?
我有一个方法,比如将所有文本拆分为()white-space,然后尝试在数据库中选择。但它会传递带有空格的长文本。 &#34;病例数&#34 ;;它会像&#34;&#34;,&#34;&#34;,&#34;&#34;,&#34;&#34;&#34;分开搜索......记录无用。
答案 0 :(得分:0)
您可以在trie-like structure中整理替换数据库。所有单字表达都在第一级。多字表达式存储为表达式中前面单词的后代。在您的示例中:
root
-> put: set
-> returns: switch
-> between: among
-> paragraphs: among paragraphs
-> paragraphs: sections
根将是一个单词词典。每个节点都有一个子字典,在大多数情况下为空,并且是一个替换值。替换在中间词中可能为空,例如在ìn -> this -> case
中,this
将没有替换,因为in -> this
本身不是有效的替换。
拆分你的句子并迭代这些词。如果您发现可能的替换开始,请按照特里结束并确定此位置可能的最长替换。替换它并从下一个单词继续迭代。
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必须只构建一次。如果您只需要替换几个句子,或者您的数据库频繁更改,这不是一个好方法。
答案 1 :(得分:-1)
您可以在sql server
中使用REPLACE
函数
SELECT REPLACE('abcdefghicde','cde','xxx') GO
将cde
替换为xxx
UPDATE tablename set col=REPLACE(col,' put ',' set ') //Please notice there are 2 ' ' beside the word