要理解一个开源项目,个人喜欢从3个方面着手。
- 上官方网站看官方文档,了解该项目的功能、特性、架构、设计理念、应用场景、解决哪些问题、能够扮演什么样的角色。
- 搜索相关的博客、论坛去了解这个项目,站在前辈的肩膀上能够看得更远
- 搭建测试调试环境、搭建项目工程,在调试中阅读源码
以solr为例,4.7.2版本调试环境搭建步骤如下:
- 拉取git项目,切换到4.7.2版本tag,setup your ide with running command "ant eclipse",打开eclipse并import项目
- 基于tomcat部署solr环境,在tomcat的bin目录下新建文件setenv.sh,添加一行
JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=55890,suspend=n,server=y"
并启动tomcat
- 在eclipse中打开类ExtendedDismaxQParser,在parse函数上设置断点,看看solr的edismax查询是怎样将各种参数转化为了什么样的Query
- 在eclipse上开启远程调试
- 向solr发起一个查询请求,http://workstation:9042/solr/servs/select?q=loog设计+OR+(rewrite_tag%3A1113_2101101)&fq=isHide%3A0&fq=serviceType%3A3&fl=title%2C+%5Bexplain+style%3Dnl%5D&wt=json&indent=true&defType=edismax&qf=saleId%5E0+title%5E1+provinceName%5E1+cityName%5E1+townName%5E1+catalogNameTree%5E1&bf=scale(query(%7B!v%3DcatalogIdTree%3A1448%7D)%2C0%2C1)&stopwords=true&lowercaseOperators=true
- 此时在eclipse上就可以跟着调试和阅读代码了,变量里存的什么值看得一清二楚