SolrInAction中文版第一章(四、五)(二)

2014-11-24 11:35:47 · 作者: · 浏览: 1
据的功能

如果你想要搜索的数据是存储在传统的关系型数据库当中的,那你可以配置Solr来通过SQL查询语句创建文档。我们在第12章中会具体讨论如何使用Solr的数据导入接口(DIH)

· 多种语言的支持

Solr和Lucene对多语言环境的支持已经发展了很长一段时间了。Solr内建了一个语言自动检测系统,对多种不同的语言环境都提供特定语言的文本分析方案支持。我们在第6章会了解到相关的详细内容。

1.4.3 Solr 4的新功能

在我们结束本章之前,让我们来看看Solr 4为我们带来了哪些新的功能。总体来说第4版对于ApacheSolr社区来说是一个重大的里程碑,一下子解决掉了Solr用户多年来在使用中发现的各种痛点和不方便的地方。我们选了几个功能亮点列在这里,不过需要指出的是Solr4的各种新功能会贯穿本书的各个章节。

· 几乎实时的搜索查询

· 支持乐观并发机制的原子更新

· 实时获取功能

· 事务日志的持久层写入

· 使用Zookeeper轻松的进行分片操作和复制操作

近乎实时的搜索查询

Solr的近乎实时(NRT)查询功能支持应用在索引建立之后几秒钟就可以查询到新加入的文本。所以利用NRT功能,Solr完全可以应付内容更新会很快的场景,比如头条新闻或是社交网络之类的应用。我们在第13章会详细讨论NRT。

· 支持乐观并发机制的原子更新

原子更新功能允许客户端应用可以对现有文档的值域做添加、更新、删除或是增加等操作而并不用重新发送整个文档给Solr。例如,如果1.2节中我们的房地产搜索示例里房屋的价格发生了变化,那么我们可以简单地发送一个原子更新到Solr更新该条房屋记录的价格即可,不用重新发送整条房屋记录的信息。

你可能疑惑如果两个不同的客户端用户试图同时更新同一条文档记录时会怎么样。在这种情况下,Solr会使用乐观并发机制来避免会产生冲突的更新。简言之,Solr会用一个特定的叫做_Version_的值域来加强文档更新过程中的安全性。当两个不同用户试图同时更新同一文档时,最后提交更新的用户会得到过期版本的数据,所以其更新请求会失败。原子更新和乐观并发机制的细节会在第12章中详细讨论。

· 实时获取功能

在本章的开头,我们说明了Solr也属于NoSQL技术的一种。Solr的实时获取功能绝对符合典型的NoSQL方式,它可以让你通过文档的唯一标识获得最新版本的文档内容,完全不需要考虑新版本的文档内容是否提交到了索引当中。这一点和实用Key-value存储方式的Cassandra很像,都是使用一个原始的key来获取key对应的最新数据。

而在Solr 4版本之前,文本内容必须先要提交到Lucene索引文件中之后才能够被访问到。而利用Solr4的实时获取功能,通过唯一标识获取文档内容的过程已经安全的同建立Lucene索引的过程分离开了。这在索引已经建立之后对文档内容进行更新的时候很有用,不用再重新提交文档内容建立新的索引了。我们在第5章会看到重新提交内容的开销很大,会影响到查询的性能。

·持久层写入

当一个文档被发送到Solr进行索引的建立时,其内容会被写入到一个事务日志中,以避免因为server故障而产生数据的丢失。Solr的事务日志处于从客户端应用发送文档过来,到把文档内容提交到Lucene索引文件之间的一个中间状态。它也参与实时获取功能的实现,因为不管文档是否已经提交到了Lucene索引文件中,其内容都可以通过唯一标识提取出来。

事务日志使得Solr可以将更新内容的持久化和更新内容的可见性分离开来。这意味着文档可能会存在于持久化存储中但是在搜索结果中并不可见。你自己的应用可以灵活控制何时将新的文档内容提交到索引中从而使得新文档内容在搜索时可以被检索到。而你并不用担心如果服务器在你提交索引之前挂掉的话新文档内容会丢失的问题。我们会在第5章讨论持久层的写入问题和提交策略问题。

· 使用Zookeeper轻松的进行分片操作和复制操作

如果你以前没用过Solr,那你可能不会理解用之前老版本的Solr进行横向扩展是多么麻烦的一件事情。而有了SolrCloud之后,横向扩展变得很简单而且自动化了。因为solr使用了ApacheZookeeper来同步配置和管理主分片及分片的复制备份。在Apache的官方网站上是这样描述Zookeeper的:”这是一个用于维护配置信息,命名,提供分布式同步和分组服务的中心服务“。

在Solr中,Zookeeper负责指定主分片和分片的复制备份,并且负责监控服务器是否可以正常的响应查询请求。SolrCloud已经绑定了Zookeeper服务,所以你不需要再做额外的配置就可以启动SolrCloud。我们会在第16章中详细讨论SolrCloud相关的内容。

1.5 总结

我们希望现在你已经对Solr典型用例和支持的数据类型有了一个直观的认识。正如你在1.1节中所学到的,Solr对4类数据的处理做了优化,包括以文本内容为中心的数据,读取远胜于写入的数据,面向文档的数据,以及schema比较灵活的数据。我们也学习到了类似Solr这样的搜索引擎并不是通用的数据存储和处理方案, 而是用来处理关键词搜索,对结果进行排序,以及帮助用户在结果中浏览和发现更符合要求的信息用的。通过一个虚拟的房地产搜索应用,我们了解到了Solr是如何在Lucene的基础上建立索引的,是如何通过基于HTTP, XML和JSON等方式的网络服务来配置管理索引建立规则的。Solr4可以通过分片功能和复制扩展两种机制来满足海量数据的高并发查询需求。Solr4不会有单点失败的问题。

我们也分别站在公司不同角色的角度分别讨论了选择Solr可以带来的一些关键的好处。我们看到了Solr是如何解决软件架构师,系统管理员甚至是公司CEO所可能提出的疑问的。最后,我们粗略的过了一遍Solr的主要功能,并提供了一个阅读指南,让你可以迅速的找到感兴趣的内容所在的章节。

我们希望看到这里你会很兴奋的想要继续学习Solr的旅程,那么现在是时候去下载一个最新的Solr,在你自己的本地机器上运行一下了。在接下来的第二章,我们就一起来做这件事。