![]() |
1
1
作为第一个切入点,我只需选择那些足够接近相同长度的字符串,它们可以在给定的概率内匹配。这不是很有选择性,但(除非你指定了非常宽松的公差)可能会消除相当大比例的不可能匹配 非常 迅速地(例如,对于像Levenstein这样将插入计数为1次操作的编辑度量,如果您从长度为5的字符串开始,并且需要在5次操作内匹配,那么您可以消除所有长度超过10的字符串,而无需进一步检查)。 这是否有足够的选择性,可以直接进行昂贵的比较,这是一个悬而未决的问题——显然,这将取决于你匹配的字符串长度的可变性。 |
![]() |
2
1
我通过做以下事情终于成功地进行了预选: 1.使用客户记录的某些字段来构建2Grams 2.将具有6个Minhash函数家族的2Grams Minhash转换为192位签名 3.使用boost::geometry库的rtree实现在签名上创建6维空间索引 4.为我正在比较的记录选择最近的k条(在我的情况下为30条)记录,并对这些候选者进行原始的“昂贵”比较 5.这将复杂性从E(i,i=n,i=1)降低到大约30n+m,其中m是建立索引所需的时间(令人惊讶的是,几乎可以忽略不计)。 我现在可以在60秒内以高精度运行15000次比较,这是在单线程测试中完成的。多线程到4或8核,这将运行得更快。 |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |