Solr入门学习(三)—— 认识 schema

Solr第四篇——schema.xml的配置 在solr家里面的核内,的conf目录下,有两个配置文件是我们要掌握的。 一个是核心配置文件solrconfig.xml,一个就是schema.xml Schema.xml中配置的是什么东西? 配置了大量的域。 打开schema.xml。看,里面配置了大量的域,选取这个进行介绍。 这条配置是个什么意思呢? 意思就是配置了一个域, 名字叫version 类型是long类型,注意 阅读详情

Server : Ubuntu 16.04
Java Version : 1.8
Solr Version : 7.4.0

前言

在 《Solr入门学习(一)—— Solr 的安装、启动与关闭》 一文中,有提到每个集合都需要指定一个 configSet,且这个 configSet 至少要包含两个主要的配置文件: schema 文件和 solrconfig.xml 文件。其中的 schema 文件就是我们本章所要介绍的内容。


一、何为 schema?

在 Solr 的官方文档中,是这么介绍 schema 的:

Solr’s schema is a single file (in XML) that stores the details about the fields and field types Solr is expected to understand.

可以这么理解,schema 文件就是一个定义了索引字段、索引数据类型等信息的配置文件。它位于对应 configSet 目录下的 conf 文件夹中,通常被命名为 managed-schema 或 schema.xml。例如,在 Solr 默认的配置集 _default 中,其 schema 文件的位置为 ../solr-7.4.0/server/solr/configsets/_default/conf。

需要注意的是,上面所述的 schema 文件应该理解为一个模板文件,并非实际的配置文件。 当我们创建一个集合时,Solr 会从指定的 configSet 取得 schema 文件并加载其配置信息到该集合中。这意味着,每个集合都有一份属于自己的 schema 文件,而 configSet 中的 schema 文件只是用于提供初始的配置信息而已。所以,当我们对集合的 schema 文件中做修改时,会发现 configSet 中的 schema 文件并不会随之修改。

这里还需要注意的一个点是,如果我们是使用 cloud 模式启动 Solr 的,那么每个集合的 schema 文件是存储在 zookeeper 中的,我们只需连接到 zookeeper,即可在 /configs/${collection_name} 路径下找到 managed-schema 文件。


二、schema 核心标签

回想一下,在关系型数据库中,数据入库前都需要预先完成字段命名、字段类型确认、字段长度设置等工作。同样地,在 Solr 中,每个集合在为数据建立索引前,也需要预先定义好字段与字段类型等,而这部分工作通过 schema 文件中的标签来完成。(注:此步骤又非必须的,具体原因见以下内容)

在 schema 文件中,有以下 4 种核心标签:

1. field

field 表示字段,相当于 Java 中的类成员变量。在 Solr 中,通过 schema 的 field 标签对字段进行定义。field 标签示例如下:

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

field 标签的常见属性可见下表:

属性名属性说明
name字段名称
type字段类型,对应 fieldType
default字段默认值
indexed该字段数据是否进行索引,默认为 false
stored该字段数据是否进行存储,默认为 false
multiValued该字段是否有多个值,默认为 false
required该字段是否为必填项,默认为 false

2. fieldType

fieldType 表示字段类型,相当于 Java 中的数据类型。在 Solr 中,通过 schema 的 fieldType 标签对字段类型进行定义。fieldType 标签示例如下:

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

正如我们在 field 标签常见属性表所看到的,field 标签的 type 属性对应 fieldType 标签的 name 属性。

3. dynamicField

顾名思义,dynamicField 表示动态字段。当我们忘记定义某个字段或者现有配置无法满足业务新增的字段时,dynamicField 可以起到很大的作用。因为它可以借助通配符 *,实现字段的动态匹配。

一个 dynamicField 标签示例如下:

<dynamicField name="*_i" type="int" indexed="true"  stored="true"/>

它定义了一个名为 *_i 的动态字段,当我们想要新增一个 fieldType 为 int 类型的字段而又不想在 schema 中新增一个 field 时,可以将字段命名为 age_i (* 可用任意字符代替)使其与该动态字段匹配。

4. copyField

copyField 是一种特殊的 field,它的作用在于将一个 field 的数据复制到另一个 field 中。

我们首先来看一个示例:

<schema name="example" version="1.6">
    <!-- field -->
    <field name="title" type="text" indexed="true" stored="false"/>
    <field name="description" type="text" indexed="true" stored="false"/>
    <field name="text" type="text" indexed="true" stored="false"  multiValued="true"/>
    <!-- copyField -->
    <copyField source="title" dest="text"/>
    <copyField source="description" dest="text"/>
</schema>

在示例中,有三个字段 title、description、text,前两者分别表示文章的标题和摘要。此外,示例中配置了两个 copyField,其作用就是将 title 字段和 description 字段的值复制到 text 字段中。当 Solr 要为一篇文章添加索引时,首先会为 title 字段和 description 字段建立索引,然后将 title 和 description 的内容复制合并后赋予 text 字段。

那么,这有什么作用呢?

我们举个例子。假设现在有一个需求,需要从库中筛选出标题、摘要或正文中含有某个关键词的文章,那么我们该怎么做?一个解决方案就是,建立一个复制了标题、摘要、正文等全部内容的字段,这样当我们进行关键词检索时,即可通过该字段快速达到目的。

不过,显而易见,copyField 的这种特性是需要耗费存储资源的。


三、schemaless 模式

在上面的内容里,我们已经知道了在建立索引前需要定义字段。那么,假如我们不定义字段呢?索引是否还能成功建立?

答案是可以。

Solr 有一个 schemaless 模式,可以根据索引数据猜测其数据类型并构建 schema,使用户无需定义字段即可快速建立索引。

例如,当我们要索引如下数据:

{
    'age':18
}

Solr 会猜测该字段属于数字类型,并自动在 schema 中添加如下定义:

<field name="age" type="plongs"/>

这看起来似乎是一个非常好的功能,但实际上,Solr 的字段猜测并不是一个可靠的功能,一旦它在初始时候猜测错误,很有可能导致后面的数据索引失败。


四、schema 配置

在 7.4.0 版本,schema 文件中有如下一段注释:

<!-- Solr managed schema - automatically generated - DO NOT EDIT -->

说明官方是不提倡手动编辑配置 schema 文件的。那么还有什么方式可以对 schema 文件进行配置呢?查阅官方文档,发现有以下两种方式:

1. use the Admin UI

在 Solr 的管理页面中,我们先选中目标集合,再选择集合下的 schema 选项,会弹出如下界面:

image

点击 Add Field 按钮,对字段名称、类型、默认值等进行配置,点击确认按钮即可完成 field 的添加。

image

2. use the Schema API

我们可以在命令行中直接通过 API 完成 schema 的配置,如下所示:

curl -X POST -H 'Content-type:application/json' --data-binary '{"add-field": {"name":"name", "type":"text_general", "multiValued":false, "stored":true}}' http://localhost:8983/solr/films/schema

其中,参数 -X 指定请求方式(如 POST),参数 -H 表示请求头,参数 --data-binary 表示以二进制的方式 post 数据。

Solr快速入门第四讲——Solr managed-schema配置文件详解 前言 本讲原意是想向大家介绍Solr中schema.xml配置文件的,但是在Solr 5.5以上版本中没有schema.xml这个配置文件了,而是出现了一个叫managed-schema的配置文件。所以,本讲将向大家介绍managed-schema这个配置文件,主要包括managed-schema配置文件中的使用实例、应用技巧、基本知识点总结以及需要注意的事项,还是具有一定的参考价值的,需要的朋友... 阅读详情

相关推荐

Apache Solr 入门指南

作者:禅与计算机程序设计艺术Apache Solr是一个开源搜索服务器。Solr允许用户在其应用程序中添加全文索引功能,并且提供各种搜索操作,如查询、导航、排序和Faceted Search等。它可以用于任何需要检索数据的应用场景。Solr被广泛地应用于基于网页的企业级应用,比如e-commerce网站、文档库、内容管理系统以及其他基于Web的业务系统。因此,作为一个开源的Apache项目,Solr具有强大的生命力和实用性。 在本教程中,我将会教你如何安装和配置Solr,并且如何进行基础的配置和使用。通过本

AI天才研究院 2010

Solr系列三:solr索引详解(Schema介绍、字段定义详解、Schema API 介绍)

一、Schema介绍 1. Schema 是什么? Schema:模式,是集合/内核中字段的定义,让solr知道集合/内核包含哪些字段、字段的数据类型、字段该索引存储。 2. Schema 的定义方式 Solr中提供了两种方式来配置schema,两者只能选其一 2.1 默认方式,通过Schema API 来实时配置,模式信息存储在内核目录的conf/managed-schema文件中。 2.2 传...

weixin_34297704的博客 971

HWSD全球土壤数据下载处理

下载地址: http://www.fao.org/soils-portal/soil-survey/soil-maps-and-databases/harmonized-world-soil-database-v12/en/

江北20190411的博客 3万+

java solr schema_关于 solr schema.xml 的配置说明

schema.xml位于solr/conf/目录下,类似于数据表配置文件,定义了加入索引的数据的数据类型,主要包括type、fields和其他的一些缺省设置。1、先来看下type节点,这里面定义FieldType子节点,包括name,class,positionIncrementGap等一些参数。name:就是这个FieldType的名称。class:指向org.apache.solr.analy...

weixin_33656238的博客 298

AURIX-TC3xx-GTM详解六-DPLL(Digital PLL Module)-寄存器1-DPLL寄存器

主要有下图这些寄存器2、

m0_69929716的博客 441

农业AI避坑指南:用YOLO11做叶片病害检测时遇到的5个典型问题

本文分享了使用YOLO11模型进行农业叶片病害检测时常见的五个典型问题及解决方案。针对田间多变光照、病害样本不均衡、标注歧义、背景干扰和边缘部署等挑战,提供了包括场景自适应数据增强、解耦训练、软标签与鲁棒损失函数、困难负样本构建以及模型轻量化部署在内的实战经验,旨在帮助开发者提升农业AI项目的落地效果。

ujm56789012的博客 206

solr配置文件schema文件中字段的介绍

一.schema文件的作用:定义索引的文当的类型和字段,类似于数据库表定义。 二.常用字段的详解: fields各个属性说明:      name: 必须属性 - 字段名      type: 必须属性 - 中定义的字段类型     indexed: 如果字段需要被索引(用于搜索或排序),属性值设置为true     stored: 如果字段内容需要被返回显示,值设置为true

健康平安的活着的专栏 5856

Changer: Feature Interaction Is What You Need forChange Detection

还有“交换“交互是一种完全不需要参数和计算的操作,它是通过交换空间或通道维度上的双时态特征映射来实现的,交换的特征在经过后续的卷积或令牌混合时进行混合。方法二:提出了两种简单的交互策略,AD和特征“交换”,大量的实验表明,它们可以极大地提高MetaChanger的性能,特别是特征“交换”,即使嵌入到复杂的网络中或应用于具有挑战性的数据集。在这里,我们用虚线勾勒本文的重点。这是变化检测任务的基本问题,双时相图像提供了同一地区在不同时间点的图像数据,通过对比这两个时间点的图像,我们可以检测出该地区的变化。

yokon的博客 1622

Solr 6.0 学习(三)Schema.xml 配置

以上配置参考:http://my.oschina.net/HuifengWang/blog/307471 ##################################使用solr遇到一个问题 start############################ solr 在使用查询的时候,【q=city:new york】 的时候会命中包含new york的所有数据文档并返回。 但是使

upxiaofeng的专栏 6977

RK3568平台开发系列讲解(外设篇)CAN的使用

📢 本篇章带大家快速了解CAN的使用。

内核笔记 2353

【小白深度教程 1.8】手把手教你使用 Depth Anything V2 估计单目深度,并映射到 3D 点云(含 Python 代码)

我们尝试使用单目深度估计技术(Depth Anything V2),来进行准确的双目深度估计,并将场景转换成 3D 点云,Python 代码在最后。

2401_87064292的博客 5090

solr 6.0 没有schema.xml未自动创建schema文件

摘要:在之前的Solr版本中(Solr5之前),在创建core的时候,Solr会自动创建好schema.xml,但是在之后的版本中,新加入了动态更新schema功能,这个默认的schema.xml确找不到了,那么managed-schema与schema.xml是什么样的关系,一起来探究一番。寻找缺失的schema.xml 在Solr的配置文件里,有两个文件很重要,一个是solrconfig.xml

随-记的专栏 8272

【数据分享】2012-2022年全国及各城市POI(兴趣点)数据(超20G)

POI(一般作为Point of Interest的缩写,也有Point of Information的说法),通常称作兴趣点,泛指互联网电子地图中的点类数据,基本包含名称、地址、坐标、类别四个属性;随着互联网电子地图服务与LBS应用的普及,POI无论从概念范畴,还是从信息纵深都有了长足发展,互联网各个风口或火山口都和POI有一定关系,如O2O、电商、社交、互联网金融、共享经济等。

J_Giser的博客 2740

Solr学习记录之Getstarted

Solr学习记录:Getting started 1.Solr Tutorial 1.1简介 1.2 解压Solr 1.3 练习一:索引Techproducts样例数据 以SolrCloud模式启动Solr(基于zookeeper的分布式搜索) 1.4 练习二:修改Schema和Films Data 重启Solr节点 什么是schema 创建新的collection 索引样例Film...

Randolfz 1388

微信公众平台 - 微信内置浏览器 WeixinJSBridge.invoke(‘xxx‘) API 报错:system:access_denied(常见于微信支付、分享朋友圈/转发好友等功能)解决方案

微信支付提示System:access_denied,调用微信支付返回:system:access_denied为什么,安卓版微信支付偶尔出现system:access_denied,微信公众号开发分享出现system:access_denied,system:access_denied如何解决?微信WeixinJSBridge.invoke(‘xxx‘)API调用后出现报错,微信内部H5WeixinJSBridge.invokesystem:access_denied,使用微信jssdk时报ac

🏆 前端领域优质创作者 5145

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

java solr schema_solr schema 配置详解

一、字段配置(schema)schema.xml位于solr/conf/目录下,类似于数据表配置文件,定义了加入索引的数据的数据类型,主要包括type、fields和其他的一些缺省设置。1、先来看下type节点,这里面定义FieldType子节点,包括name,class,positionIncrementGap等一些参数。name:就是这个FieldType的名称。class:指向org.apa...

weixin_39912368的博客 257

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java solr schema_solr的schema.xml配置属性解释

schema.xml做什么?SOLR加载数据,创建索引和数据时,核心数据结构的配置文件是schema.xml,该配置文件主要用于配置数据源,字段类型定义,搜索类型定义等。schema.xml的配置直接影响搜索结果的准确性与效率。节点types节点主要用于搜索类型的定义,这里给出常用类型的定义。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...

weixin_39815435的博客 160

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

SOLR使用手册之配置schema

一.Schema API  参考:https://cwiki.apache.org/confluence/display/solr/Schema+API solr本身提供了以下接口来操作schema,因为不是特别适用,不再一一介绍,实际场景中我们可能更多的使用直接修改schema.xml的方式. 二.Schema.xml 配置 4.9版本的solr中,schema.xm...

海子 461

Solr:Schema设计

本文已挪至  http://www.zhoujingen.cn/blog/8546.html   Solr将数据以结构化的方式存入系统中,存储的过程中可以对数据建立索引,这个结构的定义就是通过schema.xml来配置的。 &lt;?xml version="1.0" encoding="UTF-8" ?&gt; &lt;!-- Licensed to the Apache S...

weixin_34194379的博客 163

Solr入门(二)之Schema API和Facet

Solr入门(二) 重启Solr solr start -c -p 8983 -s ../example/cloud/node1/solr solr start -c -p 7574 -s ../example/cloud/node2/solr -z localhost:9983 创建新数据集 即将演示的特性:field guessing。 这种field guessing特...

清风吹过脸庞 421

如何在SOLR中嵌入自己的分词系统??

       SOLR虽然为我们提供了分词的接入方法,但很显然并不奏效,搜遍了大江南北,也没有什么可参考的,大部分都是使用的IK或庖丁之类的分词~~,难不成就这样永远活在别人的阴影中??答案是"NO!",如果是这样那就意味着屏蔽词管理,词典实时更新,实时持久化等多个个性化的产品需求得以在这些分词系统上半路杀入,老鸟应该都明白这种做法的成本是太高了。       SOLR推荐但失败的分词接入方法

thundersssss的专栏 3682

Solr schema配置文件字段说明

一、字段配置(schema)   schema.xml位于solr/conf/目录下,类似于数据表配置文件, 定义了加入索引的数据的数据类型,主要包括type、fields和其他的一些缺省设置。   1、先来看下type节点,这里面定义FieldType子节点,包括name,class,positionIncrementGap等一些参数。 name:就是这个Fi

LeoQ的专栏 3380

solr学习日记···schema配置文件介绍

上一节索引中提到了字段需要在schema配置文件中进行声明配置(在5.5.5版本中,schema配置文件的名字默认为managed-schema)。本节就简单介绍schema配置文件元素信息和配置信息。 首先,在schema配置文件中有如下几种同级元素:<fields></fields>// 字段元素 <types></types>// 字段类型 <uniqueKey></uniqueKey>//

RelFly的博客 743
上一篇: Solr入门学习(二)—— Solr 的基本查询
下一篇: MySQL 数据文件迁移至新硬盘
magicpenta
博客等级 码龄10年 42粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值