我就用本身的项目来说solr应用了,固然他的功能不少,你们能够看这里 http://my.oschina.net/fengnote/blog/288581 功能那是至关的多。数据库
solr能够理解为与应用分离的一个搜索服务,咱们要搭建应用+搜索服务的关联配置实现部分业务。架构
咱们的项目如今要改功能,一个内容发布系统,作一个站内搜索,原有的框架是SSI的,只把查询部分用solr来实现。
框架
问题是:
spa
我要查询一篇文章关联到N张表.net
我除了查询文章还要查询分类(也用solr实现)blog
新增、修改、删除文章/分类后要看到实时的更新数据索引
分页,多条件能够实现吗,个人数据须要二次处理(好比状态要显示中文)接口
这几点都作到的话咱们之前用代码查询数据库的部分就能够用solr代替。开发
分析问题:
文档
不改变原有架构,能够查询文章、分类,也就是solr中的多个索引,一个索引能够作一个查询, 多个索引可使用solr多核,后面会讲怎么配置。有些朋友常常听到中文分词,那么他和solr有什么联系吗? solr不是国人开发的,咱们查询的条件是中文的,因此加入中文分词器就能够对一句话进行分解,主流的分词器有IKAnalyzer、mmseg4j、paoding等,各个版本的分词器对应solr的配置又是各不相同的,后面讲到配置再细说。多张表的查询在solr里是能够用entity关联的,相似于咱们写关联查询,不过都是很easy的,写配置文件就能够了。当咱们新增或修改文章的时候在文章的表中加一个字段update_time,文章的最后更新时间,这个时间能够用于和solr索引的最后一次更新时间进行比较,将全部在最后一次更新的时间以后的数据增量更新到索引中。删除能够用一个字段is_del来删除索引中无用的文档(solr里的文档至关于一张“表”)
总结:
solr的多核可以解决多个索引的查询问题
solr的增量更新能解决实时显示数据
新版本基于RESTAPI的各类接口方便作查询功能