package cn.wgh.similar;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import cn.wgh.similar.simhash.AbstractSimHash;
import cn.wgh.similar.simhash.SegmentationSimHash;
import cn.wgh.similar.simhash.helper.bt.BTreeHelper;
import cn.wgh.similar.simhash.support.NodeBuilderAdapter;
import cn.wgh.similar.simhash.support.bst.BinarySortTree;
import cn.wgh.similar.simhash.support.bst.BinarySortTreeBulder;
import cn.wgh.similar.simhash.support.bt.BTreeBulder;
import cn.wgh.similar.simhash.support.bt.BTreeNode;
public class KdBTreeTest {
public static void main(String[] args) {
doSimilar();
//methodBigInteger();
}
private static void methodBigInteger() {
List<BigInteger> list = new ArrayList<>();
long st = System.currentTimeMillis();
for (long i = 1000000; i < 3000000; i++) {
list.add(new BigInteger(i+""));
list.add(new BigInteger((i*2)+""));
}
list.add(new BigInteger("2302916563077"));
long st1 = System.currentTimeMillis();
System.out.println("准备数据耗时:"+(st1-st));
BTreeBulder bTreeBulder = new BinarySortTreeBulder(list) ;
NodeBuilderAdapter nodeBuilderAdapter = new NodeBuilderAdapter();
nodeBuilderAdapter.build(bTreeBulder);
long st2 = System.currentTimeMillis();
System.out.println("建立排序二叉树耗时:"+(st2-st1));
BinarySortTree kdBTree = bTreeBulder.getbTree();
BTreeNode node = kdBTree.queryBykey(new BigInteger("1000000000000000"));//kdBTree.queryBykey(new BigInteger("2577794470021"));
long st3 = System.currentTimeMillis();
System.out.println("查询耗时:"+(st3-st2));
System.out.println(node==null?"null":(node.getId()+"--"+node.getSubKey()));
}
static String s1 = "1993年,南京大学有这样一个男生寝室,四个男生都没有女朋友,于是搞了个组合叫“名草无主四大天王”。这四大天王坚持每晚举行“卧谈会”,从各种学术上讨论如何摆脱光棍状态。这一年的11月,校园的梧桐树落叶凋零,令他们分外伤情。他们在11日这一天晚上卧谈时,符号学的灵感突然登门造访。11月11日,四个1字排开,不正是好像四根光秃秃的棍子吗?这四根光棍不正是在巧妙地诉说着“名草无名四大天王”的凄凉吗?";
static String s2 = "知乎上有个提问,小时候缺爱的女孩子,长大后该怎么办?或许在我这里,只是希望一直有人陪。喜宝说,我想要很多很多的爱,要不就是很多很多的钱,实在不行,有健康也是好的。我有个坏毛病,经常会半夜饿到不行,爬起来找吃的。是真的饿到胃疼,有时候直接饿醒了,每次看到电影里的台词,睡着了就不饿了,我是压根不相信。为什么会半夜饿?究其原因,是大学的时候没人陪我吃饭,每次都是一直等到有人陪我的时候,我才会去吃饭,最后把自己饿到胃疼,久而久之,就渐渐习惯了熬到很晚才吃饭。我不喜欢一个人吃饭,也不喜欢一个人逛街,更不喜欢一个人呆着,可是成长啊,往往是越不喜欢的便越要学会接受它。(二)讲讲上一段恋爱吧。我和他认识的时候,是因为贴吧聚餐,他主动找我要的微信,附带一个如沐春风般的笑容。我一直以为他是被我的美色打动,后来问他原因。他说,他第一次看见那么能吃的女孩子,他惊呆了,可是有觉得看我吃饭很意思,仿佛食物都有了灵魂,让人的心情莫名的好了起来。我们初相识,是因为他看见了我饿死鬼投胎的吃相。我们在一起,是因为他厨艺很好,好到什么程度呢?就是那种你吃过一顿,就能惦记一辈子的感觉。即便是现在回忆起他来,我的味蕾都会有反应。他总是给我做很多很多好吃的,午后阳光从窗子洒进来,窗帘是淡绿色的小碎花,空气里弥漫着饭香味,我们两个人坐在桌前,一边吃饭,一边聊天。我喜欢和他一起手挽着手去菜市场买菜,西红柿土豆黄瓜小白菜,手里拎着的这些果蔬食物,就好像我拥有的全世界。有一次,我们从菜市场回去的路上,明明是艳阳高照的天气,却突然间下起了冰雹,那是他第一次看见冰雹,被砸了一下之后,便立马丢了手里的菜,双手护住我,我傻了吧唧的去捡菜,被砸了一身。他立马臭骂了我一顿,说我是他见过,最好吃的女孩子了。";
static String s3 = "知乎上有个提问,小时候缺爱的女孩子,长大后该怎么办?或许在我这里,只是希望一直有人陪。喜宝说,我想要很多很多的爱,要不就是很多很多的钱,实在不行,我有个坏毛病,经常会半夜饿到不行,爬起来找吃的。是真的饿到胃疼,有时候直接饿醒了,每次看到电影里的台词,睡着了就不饿了,我是压根不相信。究其原因,是大学的时候没人陪我吃饭,每次都是一直等到有人陪我的时候,我才会去吃饭,最后把自己饿到胃疼,久而久之我不喜欢一个人吃饭,也不喜欢一个人逛街,更不喜欢一个人呆着,可是成长啊,往往是越不喜欢的便越要学会接受它。我和他认识的时候,是因为贴吧聚餐,他主动找我要的微信,附带一个如沐春风般的笑容。我一直以为他是被我的美色打动,后来问他原因。他说,他第一次看见那么能吃的女孩子,他惊呆了,可是有觉得看我吃饭很意思,仿佛食物都有了灵魂,让人的心情莫名的好了起来。我们初相识,是因为他看见了我饿死鬼投胎的吃相。我们在一起,是因为他厨艺很好,好到什么程度呢?就是那种你吃过一顿,就能惦记一辈子的感觉。即便是现在回忆起他来,我的味蕾都会有反应。他总是给我做很多很多好吃的,午后阳光从窗子洒进来,窗帘是淡绿色的小碎花,空气里弥漫着饭香味,我们两个人坐在桌前,一边吃饭,一边聊天。我喜欢和他一起手挽着手去菜市场买菜,西红柿土豆黄瓜小白菜,手里拎着的这些果蔬食物,有一次,我们从菜市场回去的路上,明明是艳阳高照的天气,却突然间下起了冰雹,那是他第一次看见冰雹,被砸了一下之后,便立马丢了手里的菜,双手护住我,我傻了吧唧的去捡菜,被砸了一身。他立马臭骂了我一顿,说我是他见过,最好吃的女孩子了。";
static int totalCount = 10000;
static int startIndex = 1000;
static int hashBit = 64;
private static void doSimilar() {
List<BigInteger> list = new ArrayList<>();
long st = System.currentTimeMillis();
for (int i = startIndex; i < totalCount; i++) {
list.add(SegmentationSimHash.getSimHash(s1+startIndex,hashBit));
list.add(SegmentationSimHash.getSimHash(startIndex+s1,hashBit));
list.add(SegmentationSimHash.getSimHash(startIndex+s1+startIndex,hashBit));
if(i%100==0){
System.out.println(i);
}
}
long st1 = System.currentTimeMillis();
System.out.println("准备数据耗时:"+(st1-st));
BTreeBulder bTreeBulder = BTreeHelper.build(list,BinarySortTreeBulder.class);
long st2 = System.currentTimeMillis();
System.out.println("建立排序二叉树耗时:"+(st2-st1));
BinarySortTree kdBTree = bTreeBulder.getbTree();
BTreeNode node = kdBTree.queryBykey(new BigInteger("2305845798648093132"));//kdBTree.queryBykey(new BigInteger("2577794470021"));
long st3 = System.currentTimeMillis();
System.out.println("查询耗时:"+(st3-st2));
System.out.println(node==null?"null":(node.getId()+"--"+node.getSubKey()));
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
wgh-similar-02.rar (37个子文件)
wgh-similar
pom.xml 1KB
target
test-classes
classes
META-INF
maven
cn.wgh
wgh-similar
pom.xml 1KB
pom.properties 220B
MANIFEST.MF 115B
.settings
org.eclipse.m2e.core.prefs 90B
org.eclipse.wst.common.project.facet.core.xml 172B
org.eclipse.core.resources.prefs 119B
org.eclipse.wst.common.component 249B
org.eclipse.wst.validation.prefs 50B
org.eclipse.jdt.core.prefs 736B
src
test
java
cn
wgh
similar
SimHashTest.java 6KB
KdBTreeTest.java 8KB
main
java
cn
wgh
similar
cosine
Cosine.java 5KB
simhash
SegmentationSimHash.java 3KB
SimHash.java 855B
support
AbstractNode.java 1KB
bst
BinarySortTreeBulder.java 411B
BinarySortTree.java 7KB
BuilderAdapter.java 243B
NodeBuilderAdapter.java 197B
NodeBuilder.java 224B
bbt
BTreeHighType.java 621B
BalanceBinaryTree.java 6KB
BTreeUnbalanceType.java 207B
BalanceBinaryTreeBulder.java 420B
bt
BTree.java 943B
AbstractBTree.java 1KB
BTreeBulder.java 2KB
BTreeNode.java 2KB
AbstractNodeBuilder.java 171B
SimpleSimHash.java 1KB
AbstractSimHash.java 1KB
HelpUtils.java 5KB
helper
bt
BTreeHelper.java 1KB
Similar.java 274B
.project 1KB
.classpath 1KB
共 37 条
- 1
资源评论
- XiaoMaPro2019-09-23期待算法性能吧
- modishizhe2022-10-22已下载,希望准确率高一些、性能高一些
wingahi
- 粉丝: 15
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功