2019独角兽企业重金招聘Python工程师标准>>>

Document

Document是Solr索引(动词,indexing)和搜索的最基本单元,它类似于关系数据库表中的一条记录,可以包含一个或多个字段(Field),每个字段包含一个name和文本值。字段在被索引的同时可以存储在索引中,搜索时就能返回该字段的值,通常文档都应该包含一个能唯一表示该文档的id字段。例如:

1

2

3

4

5

6

7

8

<doc>

    <field name="id">company123</field>

    <field name="companycity">Atlanta</field>

    <field name="companystate">Georgia</field>

    <field name="companyname">Code Monkeys R Us, LLC</field>

    <field name="companydescription">we write lots of code</field>

    <field name="lastmodified">2013-06-01T15:26:37Z</field>

</doc>

Schema

Solr中的Schema类似于关系数据库中的表结构,它以schema.xml的文本形式存在在conf目录下,在添加文当到索引中时需要指定Schema,Schema文件主要包含三部分:字段(Field)、字段类型(FieldType)、唯一键(uniqueKey)

  • 字段类型(FieldType):用来定义添加到索引中的xml文件字段(Field)中的类型,如:int,String,date,
  • 字段(Field):添加到索引文件中时的字段名称
  • 唯一键(uniqueKey):uniqueKey是用来标识文档唯一性的一个字段(Feild),在更新和删除时用到

例如:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<schema name="example" version="1.5">

    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />

    <field name="title" type="text_general" indexed="true" stored="true" multiValued="true"/>

    <uniqueKey>id</uniqueKey>

    <fieldType name="string" class="solr.StrField" sortMissingLast="true" />

    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">

          <analyzer type="index">

            <tokenizer class="solr.StandardTokenizerFactory"/>

            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />

            <!-- in this example, we will only use synonyms at query time

            <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>

            -->

            <filter class="solr.LowerCaseFilterFactory"/>

          </analyzer>

          <analyzer type="query">

            <tokenizer class="solr.StandardTokenizerFactory"/>

            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />

            <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>

            <filter class="solr.LowerCaseFilterFactory"/>

          </analyzer>

    </fieldType>

</schema>

Field

在Solr中,字段(Field)是构成Document的基本单元。对应于数据库表中的某一列。字段是包括了名称,类型以及对字段对应的值如何处理的一种元数据。比如:

<field name="name" type="text_general" indexed="true" stored="true"/>
  • Indexed:Indexed=true时,表示字段会加被Sorl处理加入到索引中,只有被索引的字段才能被搜索到。
  • Stored:Stored=true,字段值会以保存一份原始内容在在索引中,可以被搜索组件组件返回,考虑到性能问题,对于长文本就不适合存储在索引中。

Field Type

Solr中每个字段都有一个对应的字段类型,比如:float、long、double、date、text,Solr提供了丰富字段类型,同时,我们还可以自定义适合自己的数据类型,例如:

1

2

3

4

5

6

7

8

9

10

<!-- Ik 分词器 -->

 <fieldType name="text_cn_stopword" class="solr.TextField">

     <analyzer type="index">

         <tokenizer class="org.wltea.analyzer.lucene.IKAnalyzerSolrFactory" useSmart="false"/>

     </analyzer>

     <analyzer type="query">

         <tokenizer class="org.wltea.analyzer.lucene.IKAnalyzerSolrFactory" useSmart="true"/>

     </analyzer>

 </fieldType>

 <!-- Ik 分词器 -->

Solrconfig:

如果把Schema定义为Solr的Model的话,那么Solrconfig就是Solr的Configuration,它定义Solr如果处理索引、高亮、搜索等很多请求,同时还指定了缓存策略,用的比较多的元素包括:

  • 指定索引数据路径

1

2

3

4

5

6

<!--

Used to specify an alternate directory to hold all index data

other than the default ./data under the Solr home.

If replication is in use, this should match the replication configuration.

-->

<dataDir>${solr.data.dir:./solr/data}</dataDir>

  • 缓存参数

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<filterCache

  class="solr.FastLRUCache"

  size="512"

  initialSize="512"

  autowarmCount="0"/>

<!-- queryResultCache caches results of searches - ordered lists of

     document ids (DocList) based on a query, a sort, and the range

     of documents requested.  -->

 <queryResultCache

  class="solr.LRUCache"

  size="512"

  initialSize="512"

  autowarmCount="0"/>

 <!-- documentCache caches Lucene Document objects (the stored fields for each document).

   Since Lucene internal document ids are transient, this cache will not be autowarmed.  -->

 <documentCache

  class="solr.LRUCache"

  size="512"

  initialSize="512"

  autowarmCount="0"/>

  • 请求处理器
    请求处理器用于接收HTTP请求,处理搜索后,返回响应结果的处理器。比如:query请求:

1

2

3

4

5

6

7

8

9

<!-- A request handler that returns indented JSON by default -->

<requestHandler name="/query" class="solr.SearchHandler">

     <lst name="defaults">

       <str name="echoParams">explicit</str>

       <str name="wt">json</str>

       <str name="indent">true</str>

       <str name="df">text</str>

     </lst>

</requestHandler>

每个请求处理器包括一系列可配置的搜索参数,例如:wt,indent,df等等。

转载于:https://my.oschina.net/u/2929819/blog/760871

全文检索引擎Solr系列——Solr核心概念、配置文件相关推荐

  1. Elasticsearch学习系列-ElasticSearch 核心概念

    导语   这篇文章中主要分享关于ElasticSearch相关的基础知识,介绍一下关于ElasticSearch相关的术语以及它的架构相关的内容 文章目录 ElasticSearch 简介 Elast ...

  2. [摘]全文检索引擎Solr系列—–全文检索基本原理

    原文链接--http://www.importnew.com/12707.html 全文检索引擎Solr系列-–全文检索基本原理 2014/08/18 | 分类: 基础技术, 教程 | 2 条评论 | ...

  3. ElasticSearch系列——Kibana,核心概念

    ElasticSearch系列--Kibana,核心概念 Kibana 下载地址 Windows安装 修改配置文件 启动Kibana 验证 ES核心概念 Index索引 Mapping映射 Docum ...

  4. Maven——Maven核心概念——史上最烂系列

    Maven 是目前最流行的自动化构建工具,对于生产环境下多框架.多模块整合开发有重要作用.Maven 是一款在大型项目开发过程中不可或缺的重要工具.(自己粗略写了一个SSM项目之后,回顾头来看这个,会 ...

  5. nacos 本地测试_微服务架构系列之Nacos 配置核心概念

    上次讲了<微服务架构之Nacos配置中心之配置MySQL数据库>,本次讲述Nacos 配置核心概念.原作者:哈喽沃德先生,谢谢关注哈喽沃德先生. 1.配置 为什么需要配置?概念. 在系统开 ...

  6. Solr系列二:solr-部署详解(solr两种部署模式介绍、独立服务器模式详解、SolrCloud分布式集群模式详解)...

    一.solr两种部署模式介绍 Standalone Server 独立服务器模式:适用于数据规模不大的场景 SolrCloud  分布式集群模式:适用于数据规模大,高可靠.高可用.高并发的场景 二.独 ...

  7. (转)淘淘商城系列——Solr的安装

    http://blog.csdn.net/yerenyuan_pku/article/details/72874134 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service ...

  8. Flink系列文档-(YY08)-Flink核心概念

    1 核心概念 1.1 基础概念 用户通过算子api所开发的代码,会被flink任务提交客户端解析成jobGraph 然后,jobGraph提交到集群JobManager,转化成ExecutionGra ...

  9. 一文说清Elasticsearch的核心概念

    本文来说下有关Elasticsearch的核心知识 文章目录 概述 生活中的数据 先说说Lucene ES核心概念 集群(Cluster) 分片(Shards) 副本(Replicas) 映射(Map ...

最新文章

  1. [bzoj 3534][Sdoi2014] 重建
  2. MySQL 唯一索引和普通索引该如何选择?
  3. Vue+ElementUI+SpringMVC实现图片上传和回显
  4. OA系统常见的审批流程
  5. FIO测试磁盘的iops
  6. ORA-12154: TNS:could not resolve the connect identifier specified. Solved.
  7. 精度优秀,速度214.7 fps !卡内基梅隆大学开源强大的3D多目标跟踪系统
  8. DELPHI TreeView 文件目录树和 设置节点图标 完整
  9. IP种子——网络安全的重要组成部分
  10. access数据库窗体设计实验报告_Access2010实验报告
  11. python模拟登录京东网页
  12. 文本分类入门(二)——训练
  13. VR定位:Outside-in与Inside-out对比
  14. 树莓派连接WiFi连不上
  15. phoenix 安装以及开启后报错
  16. 【动网论坛7.1 sp1 修改】-加强检查注册昵称,防止全数字及简单重复ID注册
  17. DRL实战:DDPG A3C | Gym环境中经典控制问题Pendulum-v0
  18. 如何做好企业内部培训?
  19. for-each快捷键
  20. 算法计算出股票最佳交易时间点

热门文章

  1. 如何利用python进行数据分析统计服_利用Python进行数据分析
  2. java 注释 超链接_java_Java代码注释规范详解,代码附有注释对程序开发者来 - phpStudy...
  3. vim打开所有折叠的方法及其他所有折叠的命令
  4. 获取顶级域名与一级域名的python库-tld
  5. 陕西师范大学计算机专业录取,陕西师范大学计算机类专业2016年在山西理科高考录取最低分数线...
  6. matlab imfilter函数,Matlab的imfilter函数用法详解
  7. scheduled每天下午1点执行一次_在Spring Boot项目中使用@Scheduled注解实现定时任务...
  8. 谈判如何在博弈中获得更多_读后感--《谈判--如何在博弈中获得更多》
  9. vb6 combo根据index显示_VB6.0软件安装教程及学习资源
  10. python是一种动态语言、这意味着_【python编程的优点是什么?难怪选择python的人越来越多了】- 环球网校...