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