简单了解
怎么理解Solr是个什么东西呢? 引用官网的介绍,
Solr is the popular, blazing-fast, open source enterprise search platform built on Apache Lucene™.
Solr是一个基于Lucene构建的,受欢迎且速度极快的企业搜索平台。
什么意思呢? 我的简单理解就是,Solr是一个独立系统,它给我们提供了很多api来操作它所连接的“数据库”,我们可以通过api对数据库进行CRUD操作,而且查询操作还贼TM快。。
下面来介绍一下Solr里面比较重要的几个概念。
core :我把它理解成一个一个数据库。
DIH(Data Import Handler):是Solr附带的用来从关系型数据库、XML、email等目标导入数据的工具,我们如果不想每次都自己调用solr提供的api来建立索引,则可以用DIH的方式,将数据以xml配置好的格式、方式来导入到solr中。
Filter查询 :
filter主要是添加过滤条件,对查询结果进行过滤,可以多个条件连用。
例:q=*:*&fq=field1:value1&fq=field2:value2
Facet查询:
facet主要是进行结果分组,有什么分组,每个分组包括多少记录;但是分组中有哪些数据是不可知道的,只有进一步搜索。
例:
q=*:*&facet=true&facet.field=field1&facet.field=field2&facet.limit=10&facet.mincount=1
Group查询
group则类似于关系数据库的group by,可以用于一个或者几个字段去重、显示一个group的前几条记录等。
例:q=*:*&group=true&group.field=field1&group.limit=0
(结合实际项目)
补充说明:
1. Filter查询,相当于普通的select * from t where t.key =value;
fq=key:value可以多条件连用,当需要区间选择时,则用fq=key:[A TO B].
2.Facet查询,facet.field,用于告诉solr,你需要统计那些字段,有点类似select count(*) , 返回的值是搜索结果中,你需要统计的那些字段的值以及数量,比如我要统计“用途”,则facet结果是: “用途”:【“娱乐”,“10”】,【“运动”,20】,我们项目中,使用国标属性ATTR_CODE ,再拼接_FACET作为facet索引。 比如我要统计“比重”,则需要传 facet.field=QWE_PROP_FACET, 统计结果为 “QWE_PROP_FACET”:[“value”,”sum”];
3.Sort 排序。 跟mysql一样,直接属性 asc,desc即可
4.在材料搜索页面中,我们使用solr搜索产品,统计产品属性,并可通过选择产品属性进行查询,则是利用了 fq 和 facet的特性,facet统计出想要的属性,fq进行查询。
配置说明:
1. solr.xml 配置core 对应目录,以及名称
2. schema.xml 配置了field相关属性 (可以理解为字段),是整个core的数据结构
3. db-data-config.xml 或者 ,配置的就是数据库链接以及DIH规则,可以清晰看到哪个field是怎么生成的。
关于SolrCloud的研究,有时间再写篇东西记录一下。