一、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的基本概念的更多相关文章

  1. 【原】Solr入门之概念和安装

    Apache Solr 是Apache Lucene项目的开源企业搜索平台.其主要功能包括全文检索.命中标示.分面搜索.动态聚类.数据库集成,以及富文本(如Word.PDF)的处理.Solr是高度可扩 ...

  2. Solr中的概念:分析器(analyzer)、字符过滤器(character filter)、分词器(Tokenizer)、词元过滤器(Token Filter)、 词干化(Stemming)

    文本中包含许多文本处理步骤,比如:分词,大写转小写,词干化,同义词转化和许多的文本处理. 文本分析既用于索引时对一文本域的处理,也用于查询时查询字符串的文本处理.文本处理对搜索引擎的搜索结果有着重要的 ...

  3. 技术分享:如何用Solr搭建大数据查询平台

    0×00 开头照例扯淡 自从各种脱裤门事件开始层出不穷,在下就学乖了,各个地方的密码全都改成不一样的,重要帐号的密码定期更换,生怕被人社出祖宗十八代的我,甚至开始用起了假名字,我给自己起一新网名”兴才 ...

  4. Solr 多核(MultiCore)配置

    Solr Multicore意义        Solr Multicore 是 solr 1.3 的新特性.其目的一个solr实例,可以有多个搜索应用.< xmlnamespace prefi ...

  5. Solr多核的配置

    Solr 多核(MultiCore)配置 Solr Multicore意义 Solr Multicore 是 solr 1.3 的新特性.其目的一个solr实例,可以有多个搜索应用.< xmln ...

  6. solr可用于集群的搜索 【转】

    一. SOLR搭建企业搜索平台 运行环境: 运行容器:Tomcat6.0.20 Solr版本:apache-solr-1.4.0 分词器:mmseg4j-1.6.2  词库:sogou-dic 准备工 ...

  7. SOLR搭建企业搜索平台

    一. SOLR搭建企业搜索平台  运行环境:  运行容器:Tomcat6.0.20  Solr版本:apache-solr-1.4.0  分词器:mmseg4j-1.6.2  词库:sogou-dic ...

  8. Solr搜索技术

    Solr搜索技术 今日大纲 回顾上一天的内容: 倒排索引 lucene和solr的关系 lucene api的使用 CRUD 文档.字段.目录对象(类).索引写入器类.索引写入器配置类.IK分词器 查 ...

  9. Solr的入门知识

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

随机推荐

  1. Java数组的排序算法

    在Java中,实现数组的排序算法有很多,如冒泡排序法.选择排序法.直接插入法和快速排序法等.下面介绍几种排序算法的具体 实现. 本文引用文献:Java必须知道的300个问题. 1.冒泡排序法 1.1 ...

  2. java面向对象--抽象类和接口

    如果某个父类只知道其子类应该包含哪些方法,但无法知道如何实现这些方法,同时要使用多态的特性,怎么办? 抽象方法:关键字abstract允许在一个类中创建一个或多个没有方法体的方法--只提供方法签名,但 ...

  3. 使用redis做mybaties的二级缓存(2)-Mybatis 二级缓存小心使用

    Mybatis默认对二级缓存是关闭的,一级缓存默认开启: 下面就说说为什么使用二级缓存需要注意: 二级缓存是建立在同一个namespace下的,如果对表的操作查询可能有多个namespace,那么得到 ...

  4. Spring Boot 学习(2)

    文 by / 林本托 Tips 做一个终身学习的人. 源代码:github下的/code01/ch2. 配置 Web 应用程序 在上一章中,我们学习了如何创建一个基本的应用程序模板,并添加了一些基本功 ...

  5. Intel CPU命名规则的简略解析

    Intel的CPU命名规则一直不是特别清楚,而网上的很多解读是不准确,甚至是错误的,应该以官方文档为准.所以我在查阅官方资料的基础上,以一种简明扼要的方式记录下来.值得说明的是,这个解析只是简略的,一 ...

  6. Extending sparklyr to Compute Cost for K-means on YARN Cluster with Spark ML Library

    Machine and statistical learning wizards are becoming more eager to perform analysis with Spark MLli ...

  7. ProxySQL的相关维护说明

    背景: 前面的2篇文章MySQL ProxySQL读写分离使用初探和MySQL ProxySQL读写分离实践大致介绍了ProxySQL的使用说明,从文章的测试的例子中看到ProxySQL使用SQLIT ...

  8. 微信小程序 生命周期函数详解

    微信小程序 生命周期函数 小程序中 判断当前首页是从其他页面返回,还是由入口打开 由于小程序的数据在我们退出小程序时并没有得到释放,因此再次点击开来数据依然没有变成初始化 解决方法:在小程序 data ...

  9. JVM-3.内存

    目录 一.运行时数据区 二.内存使用细节:以HotSpot的堆为例 三.实战:OutOfMemoryError异常 四.垃圾收集器(堆+方法区)与内存分配策略       一.运行时数据区 1.程序计 ...

  10. JavaSE教程-04Java中循环语句for,while,do···while

    ** Java的循环语句 ** 引入: 生活中有循环,程序的世界也有循环. 思考:生活中有哪些循环的事情? 总结:什么是循环? 重复做类似的事情,而且有终止条件,如果没有终止条件会是怎样? 类似这样的 ...