快速搜索性能问题调研

    最近因为项目需要做搜索,安排我对搜索的性能这一方面做调研。本文档调研了simhash和es为代表的搜索方案。用Simhash和ElasticSearch做搜索各有优缺点,综合来看可这么标签:Simhash是偏计算密集型的搜索方案代表,但算法方案复杂;ElasticSearch是IO和硬件消耗大的搜索方案,但易用性更高;因为精力资源有限,不能亲自搭建上述方案进行实际测试对比,后续条件成熟可以根据需要实际搭建测试体验,一些数据参考网络,参考资料来备注在文档末尾。

调研过程:

名称

具体方案

Simhash

    +

Hbase

使用效果:

比对5000w条数据相似,可3.6毫秒内实现;

处理过程:

见下图,根据simhash code查找对应的数据即可;

关键算法实现:

Java实现:

http://www.open-open.com/lib/view/open1375690611500.html

Python实现:

https://github.com/seomoz/simhash-cluster 

优缺点:

方案复杂,查询方便,算法效率高,硬件开销非常小

使用建议:

可根据检索类型,加服务队列,自定义simhash code库,以键值对形式,根据value查Hbase。

注意点:

需根据人工测试比对,来确定海明距离/余弦相似度的阈值。

(对于我司的应用场景,做下排序就好了)

使用案例:

谷歌的网页去重、新浪微博相似度比较等。

ElasticSearch

    +

Hbase

使用效果:

 亿万数据查询进行秒回;

处理过程:

根据需要,将数据存储在es索引中,根据索引通查hbase。具体架构图如下。

关键查询算法:

  1. 检索的词语分成若个片;
  2. 每片同时进行检索;
  3. 返回全部结果。

优缺点:

方案简单,查询更灵活,算法效率低,硬件开销大

注意点:

该方案硬件开销大,单纯依赖硬件堆砌增加边界。

700万的数据,消耗了3个节点,各节点硬件配备的4G内存

使用案例:

应用比较多,海量交通数据实时存取等。

 

 

结论:用Simhash和ElasticSearch做搜索各有优缺点,综合来看可这么标签:

Simhash是偏计算密集型的搜索方案代表,但算法方案复杂;

ElasticSearch是IO和硬件消耗大的搜索方案,但易用性更高;

 

Simhash的求相似度的过程:

相似度的确认过程:海明距离与相似度。

Hbase + es方案:

参考资料:

  1. 海量数据相似度计算之simhash短文本查找   http://www.lanceyan.com/tag/simhash ;
  2. 基于mongodb+simhash集群  https://github.com/seomoz/simhash-cluster ;
  3. Elasticsearch之四种查询类型和搜索原理  https://blog.csdn.net/wangyunpeng0319/article/details/78218332
  4. Elasticsearch+Hbase实现海量数据秒回查询  https://blog.csdn.net/sdksdk0/article/details/53966430
  5. 基于HBase+ ElasticSearch的 海量交通数据实时存取方案设计 http://www.cww.net.cn/issues?id=405629&file=1
  6. ElasticSearch 与 Solr 的对比测试  http://simonlei.iteye.com/blog/1615600
  7. Elasticsearch实现原理分析  https://blog.csdn.net/zg_hover/article/details/77171014
  8. simHash 简介以及 java 实现 http://www.open-open.com/lib/view/open1375690611500.html

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 致远A8 8.1字典是一个电子词典应用程序,旨在提供用户一个方便、快速的查询工具。该字典应用程序支持多种语言,包括中文、英文、法文等,并提供了全面而准确的词汇解释和释义。 首先,致远A8 8.1字典具有良好的用户界面和操作体验。用户可以通过简单的操作,在首页面进行词汇查询,只需输入想要查询的词汇即可获得结果。同时,该字典还提供了语言切换功能,用户可以根据需要选择所需的语言进行查询。 其次,致远A8 8.1字典具有较高的查询准确度和全面性,能够提供详细的词汇解释和释义。用户可以获得词汇的基本含义、用法、例句等相关信息,帮助用户更好地理解和运用所查询的词汇。 此外,致远A8 8.1字典还具备便捷的功能扩展。用户可以通过字典应用程序进行错词纠正、关键词收藏和历史记录查看等操作,以提高查询效率和个性化使用体验。 总之,致远A8 8.1字典是一个功能全面、操作简便的电子词典应用程序。其准确的查询结果和详尽的词汇解释,为用户提供了方便快捷的语言查询工具。无论是学生还是专业人士,这个字典都是一个实用、高效的选择。 ### 回答2: 致远a8 8.1 是一款功能丰富的字典,可以帮助用户快速查找和学习各种词语的含义和用法。它具有以下几个主要特点: 首先,致远a8 8.1 字典的查询速度非常快。它采用了高性能搜索引擎,可以在瞬间找到用户需要的词语信息。不论是查询单个词语还是输入长句查找相关的短语或词组,都能够以极快的速度给出准确的结果。 其次,致远a8 8.1 字典具有广泛的词库。它不仅收录了常用词汇,还包括专业领域、科技、文学、历史等方面的术语和词汇。无论用户的需求是什么,都可以通过这个字典找到适合的答案。 再次,致远a8 8.1 字典提供了多种查询方式和功能。除了常见的文字查询外,用户还可以通过语音输入或拍照识别文字进行查询。此外,字典还提供了特殊领域词典、词语搭配、例句解析、发音示范等功能,以满足用户更全面的学习需求。 最后,致远a8 8.1 字典具有良好的用户界面和易用性。字典采用了直观友好的界面设计,使得用户能够轻松找到所需的功能并且使用起来非常便捷。同时,字典还支持个性化设置,用户可以根据自己的喜好进行调整。 总而言之,致远a8 8.1 字典是一款功能全面、查询快速、界面友好的字典软件。无论是学生、教师还是专业人员,都可以用它来查找和学习各种词语的含义和用法,提高自己的语言水平。 ### 回答3: 致远a8 8.1字典是一款功能强大且实用的电子词典,可以帮助用户查找和学习词汇和翻译。它具有以下特点和功能。 首先,致远a8 8.1字典具有丰富的词汇库和翻译功能。用户可以通过输入关键字来查找对应的中文或英文单词,同时还能提供详细的词义解释和例句,帮助用户更好地理解和掌握单词的用法。此外,该字典还具备中英互译功能,可以帮助用户进行简单的口译和笔译。 其次,致远a8 8.1字典还具备语音朗读功能。用户可以通过它来学习和纠正发音,同时也能帮助用户更好地理解词义和用法。这一功能非常适合外语学习者和需要提高口语表达能力的人群。 此外,致远a8 8.1字典还拥有离线查询功能。用户无需联网即可使用该字典进行查询,并且不会受到网络速度等问题的限制。这一特点使得该字典在没有网络或网络信号较弱的情况下仍然能够提供便捷的查词功能。 总之,致远a8 8.1字典是一款功能强大且实用的电子词典,适用于各类人群的词汇查找和学习需求。它的丰富的词汇库、翻译功能、语音朗读和离线查询等多重功能,使得用户能够更加便捷地提高自己的词汇水平和语言表达能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值