简单了解

  怎么理解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的研究,有时间再写篇东西记录一下。

关于solr的一些知识的更多相关文章

  1. Solr搜索引擎入门知识汇总

    1.技术选型,为什么用solr而不用lucene,或者其他检索工具 lucene:需要开发者自己维护索引文件,在多机环境中备份同步索引文件很是麻烦 Lucene本质上是搜索库,不是独立的应用程序.而S ...

  2. Solr的入门知识

      一.Solr的简介 Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务.Solr可以独立运行在Jetty.Tomcat等这些Servlet容器中.都 ...

  3. solr search基础知识(控制符及其参数)

    1.^ 控制符 (1)查询串上用^ 搜索: 天后王菲,如果希望将王菲的相关度加大,用^控制符. 天后  王菲^10.5  结果就会将含有王菲的document权重加大分数提高,排序靠前,10.5为权重 ...

  4. 关于solr云相关知识

    1.认识系统架构 1.1.集群概述 1.1.1.单点服务器的问题 我们之所以要学习集群,是因为单点服务器,存在一系列的问题. 我们以前学习的JavaEE项目,都是部署在一台Tomcat上,所有的请求, ...

  5. Solr4.8.1与Tomcat7整合

    Solr4.8.1和Tomcat7都可以到官方网站去下载,我这里就不多说了,如下图. 这里我们首先解压Solr-4.8.1.zip,再解压Tomcat,解压后,再在当前文件夹下建2个文件夹,一个用来放 ...

  6. osc搜索引擎框架search-framework,TngouDB,gso,

    项目目的:OSChina 实现全文搜索的简单封装框架 License: Public Domain 包含内容: 重建索引工具 -> IndexRebuilder.java 增量构建索引工具 -& ...

  7. solr DIH 知识梳理

    solr DIH 知识梳理 web.xml中listener配置 <listener> <listener-class>org.apache.solr.handler.data ...

  8. solr学习四(关于性能的杂知识)

    将所有只用于搜索的,而不需要作为结果的field(特别是一些比较大的field)的stored设置为false 比如我们在solr中index了一篇word,对于这篇word,我们只需要这篇文章的下载 ...

  9. Solr学习之二-Solr基础知识

    一 基本说明 简单来说Solr是基于Lucene的高性能的,开源的Java企业搜索服务器.Solr可以看作一个Web app,运行在tomcat或Jetty这类HTTP服务器上, 底层是一个基于Luc ...

随机推荐

  1. 在Python中处理大型文件的最快方法

    我们需要处理的各种目录中有大约500GB的图像.每个图像的大小约为4MB,我们有一个python脚本,一次处理一个图像(它读取元数据并将其存储在数据库中).每个目录可能需要1-4小时才能处理,具体取决 ...

  2. C/C++语言for循环语句执行顺序

    for循环如下: ; i<; ++i) { } 执行顺序如下: 1.i=0  初始化初值 2.i<10 进行判断,如果条件为真,则继续执行 3.执行循环体代码 4.i++ 变量i自增 5. ...

  3. Python之执行精确的浮点数运算

    有时候:代码上数字计算可能会有如同下面的误差 原因: 这些错误是由底层CPU和IEEE 754标准通过自己的浮点单位去执行算术时的特征. 由于Python的浮点数据类型使用底层表示存储数据,因此你没办 ...

  4. .net core mvc model填充过滤器

    在程序开发中,我们可能经常遇到所有的数据库表有相同的属性和行为,比如需要记录数据的创建人员,创建时间,修改时间和修改人.如果在每个action中都加上这些信息,代码看着比较冗余,看着不那么优雅,于是考 ...

  5. 使用await写异步优化代码

    使用promise: function readMsg(){ return dispatch=>{ axios.post('/msgList').then(res=>{ console.l ...

  6. ThreadLocal的使用和理解

    ThreadLocal是个threadlocalvariable(线程局部变量),其实就是为每一个使用该变量的线程都提供一个变量值的副本,从线程的角度看,每个线程都保持一个对其线程局部变量副本的隐式引 ...

  7. Codeforces 1195E. OpenStreetMap (单调队列)

    题意:给出一个n*m的矩形.询问矩形上所有的a*b的小矩形的最小值之和. 解法:我们先对每一行用单调栈维护c[i][j]代表从原数组的mp[i][j]到mp[i][j+b-1]的最小值(具体维护方法是 ...

  8. 转载关于struts命名空间的一则报警

    今天花了点时间把struts2警告事件彻底的测试了一边,终于有点眉目了.希望能给其他人带来一点帮助.文章属于原创.并不需要转载的时候注明出处,而是希望转载的朋友一定要看明白本文内容再转载,因为我你都清 ...

  9. Python和 pytest的异常处理

    Python中有自带的异常处理 try: except: pytest中 1.可以用try except来处理,来保证出错后,把后面的语句执行完成: 2.当有多条用例需要跑完时,不需要考虑其中一条用例 ...

  10. JSON和fastjson

    一.JSON 语法规则: 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 名称/值对-->对象-->数组 JSON 名称/值对 JSON 数据的书写格式是:名称/值对. ...