Solr之what & why

1. What

要了解Solr是什么,需要先知道另外一位兄台 — Lucene。这十多年来,搜索引擎火了,而且是暴利的行业,毕业后能到搜索引擎企业的同学,即使是国内的企业,现在也相当有米了!而Lucene就是用Java编写的一个全文信息搜索包,它提供了索引跟搜索的功能,但它不是一个完整的搜索引擎程序,因为它没有爬虫,服务器管理等等组件。也正是因为Lucene是一个纯粹的全文信息搜索包,使得它更能够为大家所用,从而更受欢迎。

 

而Solr就是对Lucene进行包装,甚至重写部分实现的搜索服务器,提供了层面搜索,高亮搜索以及多格式输出的功能,还提供了分布式搜索,分片搜索以及可扩展性等等。因此Solr足以担当一个企业级应用的名号。

 

Solr最初是由CNET Networks开发的,属于ApacheSoftware Foundation的一个开源项目,在2007年酝酿成熟。Solr的使用者有  WhiteHouse.gov; AOL.com; SourceForge.net;Netflix.com; Plaxo.com; Eclipse

 

2.Why

究竟Solr能带给我们什么好处呢?

1)  Solr的查询或者更新都是通过HTTP,以XML或者JSON,CSV等格式进行的。这样可以使得application跟solr做整合的时候花的功夫比较少。而不像是数据库一样,需要专门的驱动包,专门的格式等等

2)  Solr提供了一个强大的Web Admin,可以通过页面进行查询,更新,监控,分析,甚至重新加载配置文件

3)  Solr支持分布式负载平衡,主从负载点之间用replication的方式进行同步

4)  支持缓存、自动热加载,让查询来的更猛烈些

5)  可以有多重不同的数据源,RDBMS,XML,甚至将数据从程序直接添加到Solr

6)  …

 

综上所诉,Solr 带来的最大的好处就是 查询快!而与此同时,也带来了一些问题,比如:

1)      比较难用于复杂的业务逻辑查询。Solr的查询语法不支持JOIN (听说Solr4.0支持JOIN操作),进行子查询也不是件容易的事,多条件进行OR操作性能也不是很乐观!

2)      主从负载点确实能提高性能,但随着带来的问题是数据的及时性问题。由于Solr同一时刻只能有一个server可以写index,所以这就迫使大多数设计只能有一个写服务器,加上N个读服务器。当写服务器更新index之后,它需要发出信号跟大家说“有更新啦,快来拿呀”,然后各个从服务器再从主服务器拿到更新的index。而在此期间,主服务器跟从服务器之间的数据是不一致的,在更新期间,各个从服务器之间也回出现数据不一致的情况

 

所有利器都是把双刃剑!个人觉得 用Solr也是有条件的:不需要复杂的业务逻辑查询(当然,我们可以在数据加进index的时候进行一些处理),对于数据的一致性/实时性的要求不高。当然,Solr的后续版本可能有办法解决这样的问题,到时找时间再更新!

 最后再泼一盆冷水,千万别把Solr当做是RDBMS 性能问题的救星!!最近有不少同事在问Solr可不可以做这个做那个的问题,甚至还在抱怨solr支持得不好。只能说:Solr不是银弹!我们做这种POC的时候,不是说 Solr有什么什么功能我们可以用,而是要先分析我们的问题究竟是什么,瓶颈在哪里,然后去找寻哪个产品最能解决这一类的问题。 千万千万不能本末倒置....


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值