在工作中,我们经常需要从与其他输入字符串最匹配的字符串列表中查找字符串.目前,我们正在使用Needleman-Wunsch算法.该算法通常会返回大量误报(如果我们将最小分数设置得太低),有时候它应该找不到匹配(当最小分数太高时),并且大多数时候,我们需要手工检查结果.我们认为我们应该尝试其他替代品.
您对算法有任何经验吗?你知道算法如何相互比较吗?
我真的很感激一些建议.
PS:我们用C#编码,但你不应该关心它 - 我一般都在询问算法.
哦,对不起,我忘记提及了.
不,我们不是用它来匹配重复数据.我们有一个我们正在寻找的字符串列表 - 我们称之为搜索列表.然后我们需要处理来自各种来源的文本(如RSS提要,网站,论坛等) - 我们提取这些文本的一部分(有完整的规则集,但这是无关紧要的)我们需要匹配那些反对搜索列表的人.如果字符串匹配search-list中的一个字符串 - 我们需要对事物进行一些进一步的处理(这也是无关紧要的).
我们无法执行正常的比较,因为从外部源提取的字符串,大多数时候,包括一些额外的单词等.
无论如何,它不是重复检测.
假设我有一个包含列id和标题的表tbl.我需要更改title列的所有值:
现在,我正在执行两个UPDATE语句:
UPDATE tbl SET title='a1' WHERE title IN ('a-1', 'a.1')
UPDATE tbl SET title='b1' WHERE title IN ('b-1', 'b.1')
Run Code Online (Sandbox Code Playgroud)
如果表很小,并且单个语句在不到一秒的时间内完成,并且您只需要执行一些语句,那么这根本不是问题.
你可能已经猜到了 - 我有一个巨大的表来处理(一个语句在大约90秒内完成),我有大量的更新要执行.
那么,是否可以合并更新,以便只扫描一次表?或许,在这样的情况下,有更好的方法来处理.
编辑:注意,我正在使用的真实数据和我必须执行的数据的更改并不是那么简单 - 字符串更长并且它们不遵循任何模式(它是用户数据,所以没有假设可以制作 - 它可以是任何东西).
基本上,我需要的是Dependecy Walker,但它应该适用于.NET应用程序.有没有这样的工具?
我在考虑制作一个小工具.这个工具会做什么并不重要.重要的是,该工具需要在用户的硬盘上存储一些敏感信息.编辑:将存储的信息是用户信息 - 我不是要保护我自己的内容,而是通过应用程序分发.
我知道我需要加密这些信息.但是,我在哪里可以安全地存储加密密码?这是某种无限递归......
那么,有没有办法加密Windows上的信息,并让Windows安全地管理密码?当我说Windows时,我指的是Windows XP SP2或更高版本.
我还应该注意,同一系统上的用户必须无法访问其他用户信息(即使他们都在运行我的应用程序).
我正在寻找这个问题的.NET 2.0(C#)和本机(C/C++)解决方案.
我真的不需要对默认文章文档类进行大量更改.我想要的只是:
也许,在这种情况下有一些可能有用的软件包?
我注意到这种功能存在于颠覆中,并且它的工作非常好.我想知道SourceGear Vault是否有这样的东西.
我正在开发一个SMSC服务,该服务应该加入消息(如果它找到PDU头),然后将该消息传递给下一个使用不同协议(不仅仅是SMPP)实际传递消息的服务.现在,我对消息的最大长度感到有些困惑.
我一直在寻找,我发现它的唯一的事情就是这样,在那里他们提到:
注意:理论上,可以使用255条消息(39,015个字符)作为连锁短信.但是,3个SMS(或459个字符)通常被认为是将在大多数移动手机上显示的最长信息.CardBoardFish将串行短信限制为459个字符,以确保最大兼容性.
是否有任何官方文件说明这3个sms的最大限制?移动操作系统实际上有哪些限制?最后,我应该在服务中允许的最大长度是多少?
我想在家里用python 3.0进行一些实验.我让python 3.0工作,我玩了一些脚本,我觉得尝试使用它制作一个小型的Web项目会很有趣.
事实证明,当谷歌搜索时,由于某些原因,mod_python将无法支持python 3.0.
我发现的唯一另一种选择是mod_wsgi.
在mod_wsgi项目的主页上,它说,如果你想使用python 3.0,你必须从subversion存储库获取最新版本.我想知道,如果有一个预先建立的Windows二进制文件可用吗?
如果没有这样的二进制文件,那么我会感谢有关使用VC++ 2008构建它的任何资源.或者甚至可能是关于使用VC++ 2008构建apache和它的模块的一般资源.谢谢.
哦,我正在使用最新的Apache 2.2版本.
编辑:这是一个问题,如果我将使用我自己的mod_wsgi构建官方apache构建(我在apache上使用了depends.exe,似乎它不是用VC++ 2008构建的)?
我正在尝试加载CSV文件(delims是';',引号是''').
我已成功创建了所有内容(向导工具很棒),但有一件事我无法找到解决方案.
基本上,我有一个整数(System.Int32)列.理论上,大多数记录在该列中将具有正整数值.但是,有时我可能会在该列中遇到值"N/A".我想要实现的是,当FileHelpers在该列中遇到"N/A"时,它会分配一个默认值(-1可以正常工作).
有谁知道这是否可能?
PS:我可能需要为System.DateTime字段做同样的事情(有时候它也可能有"N/A").
编辑:看我的回答.我们的代码存在问题.MR工作正常,可能有状态报告问题,但至少输入阅读器工作正常.
我现在多次运行实验,现在我确定mapreduce(或DatastoreInputReader)有奇怪的行为.我怀疑这可能与关键范围和分裂它们有关,但这只是我的猜测.
无论如何,这是我们的设置:
AdGroup(id=str(adgroupId))mapreduce从这个开始(从另一个管道):
yield mapreduce_pipeline.MapreducePipeline(
job_name='AdGroup-process',
mapper_spec='process.adgroup_mapper',
reducer_spec='process.adgroup_reducer',
input_reader_spec='mapreduce.input_readers.DatastoreInputReader',
mapper_params={
'entity_kind': 'model.AdGroup',
'shard_count': 120,
'processing_rate': 500,
'batch_size': 20,
},
)
Run Code Online (Sandbox Code Playgroud)所以,我今天尝试多次运行这个mapreduce而不改变代码中的任何内容而不更改数据存储区.每次运行它时,mapper-calls计数器都有不同的值,范围从450,000到550,000.
如果我错了,请纠正我,但考虑到我使用非常基本的DatastoreInputReader - mapper-calls应该等于实体数量.所以它应该是110万或更多.
注意:我之所以首先注意到这个问题的原因是因为我们的营销人员开始抱怨"我们添加了新的广告组并且他们仍然没有显示在您的应用中,这已经过了4天!".
现在,我只能想到一种解决方法 - 将所有广告组的所有密钥写入blobstore文件(每行一个),然后使用BlobstoreLineInputReader.当然,写入blob部分必须以不使用DatastoreInputReader的方式编写.我现在应该继续这样做,还是可以提出更好的建议?
注意:我也尝试使用具有相同代码的DatastoreKeyInputReader - 结果类似 - 映射器调用介于450,000和550,000之间.
所以,最后问题.如何为实体生成ID很重要?使用intid而不是strid 更好吗?一般来说,我可以做些什么来使mapreduce更容易找到映射它们的所有实体?
PS:我还在试验这个,我可能会在以后添加更多细节.
我们有很多表格,观点和内容.有一些人在同一个数据库上处理不同的东西,有时候,我们改变了搞砸其他工作的东西(比如更改视图中的列,或者将参数更改为存储过程).
有没有办法自动化这些检查?我甚至不知道MS SQL的单元测试是否可行,因此任何类型的自动化测试工具都会很好.
谢谢.
.net ×2
sql-server ×2
windows ×2
.net-2.0 ×1
algorithm ×1
android ×1
apache ×1
audio ×1
c# ×1
dependencies ×1
dvcs ×1
encryption ×1
events ×1
filehelpers ×1
ios ×1
latex ×1
mapreduce ×1
mercurial ×1
mod-wsgi ×1
native ×1
optimization ×1
python ×1
python-2.7 ×1
security ×1
smpp ×1
sms ×1
sql ×1
string ×1
t-sql ×1
unit-testing ×1
visual-c++ ×1