(1)当今,软件架构所面临的一个主要挑战是处理广泛的全球群体消费和产生的大数据;为解决现代web应用的可扩展性和可用性需求,NoSQL技术受到越来越多的关注,Apache下的Solr便是一种NoSQL技术。
(2)Solr是可扩展的开箱即用的企业级搜索引擎,用来搜索大规模文本数据根据相关度排序结果
(3)Solr构建在Apache的Lucene上,Lucene是基于Java的开源信息检索库。


1.2 Solr处理的数据特征
(1)以文本为中心:搜索引擎是将文本中的隐含结构抽取出来创建索引,从而改善搜索效率的,因此以文本为中心很重要。
(2)读主导:文档被读取的次数远多于被创建和更新的次数,能实现有效读取,无须经常更新。
(3)面向文档:搜索。引擎中,文档是字段的自包含集合。
(4)灵活的模式:区别与关系型数据库,Solr索引的文档不必有统一的结构,可以有不同的字段。
以上说明了Solr不是一种通用的数据存储和处理技术,更多是对关系型数据库和NoSQL数据库的补充。


1.3 Solr的应用例子
(1)基础关键词搜索:为用户提供强大的工具执行关键词匹配搜索;
(2)基于用户查询相关度的搜索结果排名:清晰的导航方式,通过提升字段权重排名,返回“优化”文档;
使得引擎对用户的搜索意思更加“了解”;
(3)超越关键词搜索:帮助用户明确信息需求,如对搜索结果分类,方便用户缩小搜索范围(即分面搜索,引导进一步的发现和查询细分,Solr的强项之一);


1.4 Solr和Lucene的关系
Solr使用Lucene实现索引文档核心结构,Solr后台使用schema.xml将所有可能的字段和数据类型,将文档映射
成Lucene索引;而Lucene是一个Java类库,用于倒排索引(专门用于匹配查询词项与文本文档的数据结构),
Lucene查询和一般数据库查询的不同之处在于Lucene的结果是根据查询的相关度排名,而一般数据库是根据表的一列或多列进行排序。


1.5 Solr与Java Web应用
Solr是一个Java Web应用,可以运行在任何主流Java Servlet引擎中,最经典的就是小型服务器Tomcat;对于架构师而言,Solr在稳定性,可伸缩性和容错性这三方面是遥遥领先的技术;


1.6 Solr的主要功能
(1)用户体验功能:分页,排序,分面,自动建议和拼写检查,搜索结果高亮,地理空间搜索……
(2)数据建模功能:结果分组,导入各种文档格式,从关系型数据库导入数据,多语种支持……
(3)Solr4新功能:近实时搜索,使用Zookeeper实现简易分片和复制……