solr的基本概念
一、solr的基本概念
大家可以把solr搜索引擎看成一个数据库,不过是基于内存的。它可以存储信息,并且根据你的查询条件返回你想要的信息。
1、collection和core的概念
collection和core其实可以看成功一个概念,都是同一种数据格式的集合,可以对照数据库中的一张表。
在solr集群的情况下,我们称这张表叫collection,在单机的情况下,我们叫它core。
在solr集群的情况下,每一个shard分片下的副本replica也称为core。
2、filed概念
filed从字面就能看出它的含义,就是字段,或者称为域,可理解为数据库中的一张表中的字段。
我们在存储数据时,为每个filed赋值,可对照数据库insert时,为每个字段插入值。
我们在检索时,会查询某个filed “等于” 或者 “like” 你的查询条件,可理解为sql语句中的where条件。
每个collection或core的filed配置都在managed-schema中进行配置,filed的格式如下:
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
name:字段名称;
type:类型,分为:string,strings,int,ints,long,longs等
indexed:是否构建索引,true:可通过该字段查询到相应的结果;false:该字段不能进行查询。
stored:是否存储,true:查询到数据时可以返回此字段;false:该字段不进行存储,即便查询到了结果,也不会返回这个字段。
required:是否必填,对应数据库中的not null。
multiValued:solr中的一个重要概念,在数据库中没有与之对应的。是否多指存储,该字段能否存储一个list或者数组。
例如:一个filed的名字是interest(爱好),一个人的爱好有很多,足球、篮球、游泳等。在solr中,我们可以将爱好组成一个list放到这一个字段中。
如果在数据库中,我们没有相应的概念,只能新建一张表,做一对多的关系。
3、index、query、分词
index和query很好理解,对应的就是存储数据和查询数据的过程,可对照上面的解释。
分词,就是将你输入的内容,按照一定的规则分成不同的词,以便于查询。
举个简单的例子,比如:“我爱北京天安门”,通过分词器过滤后分解成:“我”、“爱”、“北京”、“天安门”。
当我们查询任意一个词时,都会检索出“我爱被北京天安门”这句话。
分词的动作在两个过程中触发,分别是:index和query。
在index构建索引时,触发分词,会将每一个filed中的内容进行分词并构建索引。
在query查询时,会将你的查询条件进行分词,并在索引中找到你的分词,进而找到你要搜索的数据。
4、filed中的一些公用字段。
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="_version_" type="long" indexed="true" stored="false"/>
<field name="_root_" type="string" indexed="true" stored="false" docValues="false" />
<field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>
<copyField source="*" dest="_text_"/>
前面4个是每个collection或filed中都含有的字段,我们注意到最后一行,<copyField source="*" dest="_text_"/>,含义是将所有的字段都复制到“_text_”字段中去,并进行分词。
如果我们要进行全文检索,就可以查询“_text_”字段。
我们在managed-schema中,还注意到很多类型<dynamicField name="*_i" type="int" indexed="true" stored="true"/>的配置,
这些就是动态字段,这个概念在数据库中也没有,我们在构建索引,只要字段符合上面name的格式,就会动态的创建这个字段,无需像上面那样显示的声明这个字段。
在solr中,已经默认给我们创建好了一些常用的动态字段,方便了我们的使用。我们在编写java通用类时也正是运用了这一特性。
至此,solr的一些基本概念已经讲解完了,大家还需多在实践中理解,这样才能更加透彻。
下一篇我们将介绍利用java反射机制和solr的动态值概念,编写java通用类。
solr的基本概念的更多相关文章
- 【原】Solr入门之概念和安装
Apache Solr 是Apache Lucene项目的开源企业搜索平台.其主要功能包括全文检索.命中标示.分面搜索.动态聚类.数据库集成,以及富文本(如Word.PDF)的处理.Solr是高度可扩 ...
- Solr中的概念:分析器(analyzer)、字符过滤器(character filter)、分词器(Tokenizer)、词元过滤器(Token Filter)、 词干化(Stemming)
文本中包含许多文本处理步骤,比如:分词,大写转小写,词干化,同义词转化和许多的文本处理. 文本分析既用于索引时对一文本域的处理,也用于查询时查询字符串的文本处理.文本处理对搜索引擎的搜索结果有着重要的 ...
- 技术分享:如何用Solr搭建大数据查询平台
0×00 开头照例扯淡 自从各种脱裤门事件开始层出不穷,在下就学乖了,各个地方的密码全都改成不一样的,重要帐号的密码定期更换,生怕被人社出祖宗十八代的我,甚至开始用起了假名字,我给自己起一新网名”兴才 ...
- Solr 多核(MultiCore)配置
Solr Multicore意义 Solr Multicore 是 solr 1.3 的新特性.其目的一个solr实例,可以有多个搜索应用.< xmlnamespace prefi ...
- Solr多核的配置
Solr 多核(MultiCore)配置 Solr Multicore意义 Solr Multicore 是 solr 1.3 的新特性.其目的一个solr实例,可以有多个搜索应用.< xmln ...
- solr可用于集群的搜索 【转】
一. SOLR搭建企业搜索平台 运行环境: 运行容器:Tomcat6.0.20 Solr版本:apache-solr-1.4.0 分词器:mmseg4j-1.6.2 词库:sogou-dic 准备工 ...
- SOLR搭建企业搜索平台
一. SOLR搭建企业搜索平台 运行环境: 运行容器:Tomcat6.0.20 Solr版本:apache-solr-1.4.0 分词器:mmseg4j-1.6.2 词库:sogou-dic ...
- Solr搜索技术
Solr搜索技术 今日大纲 回顾上一天的内容: 倒排索引 lucene和solr的关系 lucene api的使用 CRUD 文档.字段.目录对象(类).索引写入器类.索引写入器配置类.IK分词器 查 ...
- Solr的入门知识
一.Solr的简介 Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务.Solr可以独立运行在Jetty.Tomcat等这些Servlet容器中.都 ...
随机推荐
- Js之on与addEventListener的使用与两者的不同
Js之on和addEventListener的使用与不同 一.首先介绍两者的用法: 1.on的用法:以onclick为例 第一种: obj.onclick = function(){ //do som ...
- jquery之效果操作
jQuery操作之效果 效果一共分五大类 一.基本 二.滑动 三.淡入淡出 四.自定义 五.设置 咱们先来看一下基本类 一.基本又分为 show() hide() toggle() html代码 &l ...
- MyBatis之级联——鉴别器
鉴别器(discriminator)是MyBatis为我们提供的第三个级联也是最后一个.基于之前两篇级联中的场景,现增加学生们去体检,但男女体检项目不一样,我们把男女体检表做成两张表,当然我想也可以设 ...
- Java Synchronization
Volatile Since Java 5 the volatile keyword guarantees more than just the reading from and writing to ...
- How to parse project properties or how to parse files with key-value pair
If a file has content like raven.enabled = false raven.host = "localhost" raven.port = 808 ...
- 利用shell脚本监控目录内文件改动
#! /bin/bash webroot="/home/www/" cp /dev/null rsync_file if [ ! -f file.md5 ];then ...
- VOD, TVOD, SVOD FVOD的区别(转)
VOD: Video On Demand 视频点播 TVOD: True Video On Demand 即点即播 按次付费点播,付费后,观众一般有48小时的时间可以观看该片,48小时后需要再次付费才 ...
- Unity运动残影技能
残影实现: 1.List<DrawMesh> list,此list中包含某一帧动画模型网格.材质 2.每过一段时间就将运动物体的模型add到list中(优化:未实现,网格合并) 3.Lat ...
- 第41篇 推荐一个jekyll博客模板
本人用的模板是基于Codeboy的博客模板改造模板,(由于本人可能会有很多样式修改,所以不再将修改pullrequst到原项目,在此对codeboy模板表示感谢).功能改造如下: 添加微信支付宝打赏 ...
- Scheme 中的 pair 和 list 简述
pair (cons 1 2) > (1 . 2) 系统返回(1 . 2).cons 操作给两个地址分配了内存空间,并把存放指向 1 的地址放在一个空间,把存放指向2的地址放在另一个空间.存放指 ...