EasyNet.Solr开发历程

今天早上的时候,突然想写写自己开发EasyNet.Solr的历程。在期间遇到了很多问题,比如架构问题、性能问题等等。我很想和大家分享一下自己的一些想法,我觉得谈不上什么经验,有不当的地方,欢迎大家拍砖。

记得当时我决定用Solr做公司的全文检索应用,Solr给我的最初感觉就是功能完善, 性能也满足目前需求。但是在选择.Net客户端时,我却有些为难。当时只有两种选择SolrSharp和Solr.Net。SolrSharp已经很久没有更新了,于是最终决定用Solr.Net。因为我喜欢简单(我喜欢简单,我是凡客),所以自己在Solr.Net进行了精简。记得正式上线的晚上,在线上测试时,发现Solr.Net有些性能问题,后来根据dump文件,主要是序列化导致的。于是当晚我把序列化修改为基于接口的实现。上线后,逐步对Solr.Net进行了进一步优化,把基于xml的协议修改为了基于json的协议,随后,又看了solrj的代码,最终修改为了了采用Solr官方推荐的 javabin协议。

为了方便其他在windows平台使用Solr的同学们,在去年,我开源了自己改写的Solr.Net版本:EasyNet.Solr。在后继的日子,逐步修改了EasyNet.Solr的架构,使之更加精简,也易于扩展。目前在发布的版本中,基本上可以支持Solr的大部分功能。

我有一个算是原则吧:我提供你我认为的最好的方式,但是,假如你不满意,你可以在此架构上去扩展去实现自己的想法。基于这个原则,EasyNet.Solr保持了默认的javabin协议、基于接口的序列化实现。但是,通过实现 ICodec、ICodecFactory,可以对xml、json等协议进行处理。通用解析接口ISolrResponseParser,提供了对Solr操作结果的完全控制。

做一个开源项目很难,想做好更难。有时候,突然有一个新的想法,我可能会深夜起来去编码实现。让我比较开心的是,有一个同学在CodePlex上给EasyNet.Solr评了一个星。

开始了就要尽可能坚持下去,尽可能去做好,做的更好。我很简单,我喜欢开源,我喜欢分享,我喜欢编码,我是凡客。

原文地址:https://www.cnblogs.com/TerryLiang/p/2031951.html