电影《从你的全世界路过迅雷链接》完整版《从你的全世界路过迅雷链接》迅雷高清下载.

以前使用数据库精确搜索但是其使用(%和like)导致其速度慢、功能不强、性能低;所以我们今天来学习Lucene相关的搜索引擎。

Lucene是当前非常流行的、免费的Java信息搜索(IR)库Lucene是Apache下一個著名的开源搜索引擎内核,它基于Java技术可以处理索引、拼写检查、点击高亮和其他分词等技术。Lucene并不关心数据源、数据格式、甚至数據的语言Lucene更不会关心搜索的界面会是怎样,因为这些工作都是由基于Lucene的程序来完成因此Lucene使用于几乎所有以文本内容为主的数据检索功能。

Lucene主要实现索引和查询的核心功能及API但并不是一个完整的产品,而Solr是一个独立的应用服务器它对外提供类似于Web-service的API接口,用户可以通過Http请求向搜索引擎服务器提交一定格式的XML文件,生成索引并且提供灵活的Schema配置、多核心支持、面搜索(Faceted Search)等。同时实现了可配置、可扩展並对查询性能进行了优化并且提供了一个完善的功能管理界面,是一款非常优秀的Solr 主要特性有:强大的全文检索功能,高亮显示检索結果动态集群,数据库接口和电子文档(Word PDF 等)的处理。而且Solr 具有高度的可扩展支持分布搜索和索引的复制。

Nutch和Solr原来都是Lucene下的子项目但后来Nutch独立成为独立项目。Nutch是2004年由俄勒冈州立大学开源实验室模仿Google搜索引擎创立的开源搜索引擎后归于Apache旗下。Nutch 是一个开源实现的它提供了我们运行自己的搜索引擎所需的全部工具。包括和Web

Hadoop 是一个开源的可运行于大规模集群上的分布式并行编程框架,由于分布式存储對于分布式编程来说是必不可少的这个框架中还包含了一个分布式文件系统HDFS( Hadoop Distributed File System )。Hadoop原来是Nutch下的分布式任务子项目现在也成为Apache下的顶级项目。Nutch可以利用Hadoop进行分布式多任务抓取和分析存储工作Doug Cutting 把 Nutch 中的分布式文件系统以及实现 MapReduce 算法的代码独立出来形成了一个新的开源项 Hadoop。Nutch 也演化為基于 Lucene 全文检索以及 Hadoop 分布式计算平台的一个开源搜索引擎Hadoop 实现了 Google 的 MapReduce 编程模型提供了简单易用的编程接口,也提供了它自己的分布式文件系统 HDFS,与 Google 不同的是Hadoop 是开源的,任何人都可以使用这个框架来进行并行编程如果说分布式并行编程的难度足以让普通程序员望而生畏的话,开源的 Hadoop 的出现极大的降低了它的门槛

略微了解Lucene相关技术,现在让我们新建一个maven项目运用一下!!!

//得到读取索引文件的路径 //通过dir得箌的路径下的所有的文件 * 第一个参数是要查询的字段; //根据传进来的par查找 * 第一个参数是通过传过来的参数来查找得到的query; * 第二个参数是要絀查询的行数 //设置标签内部关键字的颜色 //第一个参数:标签的前半部分;第二个参数:标签的后半部分。 //第一个参数是对查到的结果进行實例化;第二个是片段得分(显示得分高的片段即摘要) * ScoreDoc:是代表一个结果的相关度得分与文档编号等信息的对象。 //把全部得分高的摘要給显示出来 //第一个参数是对哪个参数进行设置;第二个是以流的方式读入

Kryo之所以没有被作为默认的序列化類库的原因就要出现了:主要是因为Kryo要求,如果要达到它的最佳性能的话那么就一定要注册你自定义的类(比如:你的算子函数中使鼡到了外部自定义类型的对象变量,这时就要求必须注册你的类,否则Kryo达不到最佳性能

当使用了序列化的持久化级别时,在将每个RDD partition序列化成一个大的字节数组时就会使用Kryo进一步优化序列化的效率和性能。默认情况下Spark内部是使用Java的序列化机制,ObjectOutputStream / ObjectInputStream对象输入输出流机淛,来进行序列化
这种默认序列化机制的好处在于,处理起来比较方便;也不需要我们手动去做什么事情只是,你在算子里面使用的變量必须是实现Serializable接口的,可序列化即可但是缺点在于,默认的序列化机制的效率不高序列化的速度比较慢;序列化以后的数据,占鼡的内存空间相对还是比较大
Spark支持使用Kryo序列化机制。Kryo序列化机制比默认的Java序列化机制,速度要快序列化后的数据要更小,大概是Java序列化机制的1/10

所以Kryo序列化优化以后,可以让网络传输的数据变少;在集群中耗费的内存资源大大减少在进行stage间的task的shuffle操作时,节点与节点の间的task会互相大量通过网络拉取和传输文件此时,这些数据既然通过网络传输也是可能要序列化的,就会使用Kryo

Kryo序列化机制,一旦启鼡以后会生效的几个地方:

  • 算子函数中使用到的外部变量,使用Kryo以后:优化网络传输的性能可以优化集群中内存的占用和消耗
  • 持久化RDD,StorageLevel.MEMORY_ONLY_SER优化内存的占用和消耗;持久化RDD占用的内存越少task执行的时候,创建的对象就不至于频繁的占满内存,频繁发生GC
  • shuffle:可以优化网络传輸的性能,

4、如果您发现某页面或地址有错誤请在页面下方评论框留言或联系站长邮箱,我们会尽快处理您的热心是对

5、本站建议去正规影院观看电影以支持电影行业发展。


我要回帖

更多关于 从你的全世界路过迅雷链接 的文章

 

随机推荐