Solr 配置文件之schema.xml

schema.xml这个配置文件的根本目的是为了通过配置告诉Solr怎样建立索引。

solr的数据结构例如以下:
  • document:一个文档、一条记录
    • field:域、属性
solr通过搜索某个或某些field,返回若干个符合条件的document。或者按搜索的score排序返回。
假设跟数据库对照,document相当于数据库的表,field相当于表中的字段。而schema.xml就是为了定义一个表的结构(定义各个field的名字、类型、约束、等等)。

schema.xml的基本结构例如以下:
<schema>
<types>
<fields>
<uniqueKey>
<copyField>
</schema>

经常使用的配置说明:
  • field:定义一个document中的各个fields
    • name:必填。该field的名字。前后都有下划线的name是系统保留的名字,比方“_version_”
    • type:必填。

      类型。相应于fieldType的name

    • default:该field的缺省值
    • indexed:true/false。是否为该field建立索引,以让用户能够搜索它、统计它(facet)
    • stored:true/false,定义这个field能否够返回给查询者
    • multiValued:true/false。能否够容纳多个值(比方多个copyField的dest指向它)。假设是true。则该field不能被排序、不能作为uniqueKey
    • required:true/false。告诉solr这个field是否接受空值,缺省为false
    • docValues:true/false。建立document-to-value索引。以提高某些特殊搜索的效率(排序、统计、高亮)
  • copyField:把一个field的内容复制到另外一个field中。一般用来把几个不同的field copy到同一个field中,以方便仅仅对一个field进行搜索
    • source:被拷贝的field,支持用通配符指定多个field,比方:*_name
    • dest:复制到的目的field
    • maxChars:最大字符数
  • uniqueKey:指定一个field为唯一索引
  • fieldType:定义field的类型,包含以下一些属性
    • name:必填,被field配置使用
    • class:必填,filedType的实现类。solr.TextField是路径缩写,"等价于"org.apache.solr.schema.TextField"
    • multiValued:?
    • positionIncrementGap:指定mutiValued的距离
    • ananlyzer:假设class是solr.TextField,这个配置是必填的。

      告诉solr怎样处理某些单词、怎样分词,比方要不要去掉“a”。要不要所有变成小写……

      • type:index或query
      • tokenizer:分词器,比方:StandardTokenizerFactory
      • filter:过滤器。比方:LowerCaseFilterFactory
  • dynamicField:用通配符定义一个field来存在没有被field定义的漏网之鱼
    • name:使用通配符。比方“*_i”,来处理类似“cost_i”之类的field

一个简单的样例:
<?xml version="1.0" encoding="UTF-8" ?><schema name="course_video" version="1.5"><field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" /><field name="_version_" type="long" indexed="true" stored="true"/><field name="title" type="string" indexed="true" stored="true" required="true" multiValued="false" /><field name="tags" type="string" indexed="true" stored="false" required="false" multiValued="false" /><field name="content" type="string" indexed="true" stored="true" required="false" multiValued="false" /><field name="info_text" type="text_general" indexed="true" stored="false" multiValued="true" /><copyField source="title" dest="info_text" /><copyField source="content" dest="info_text" /><copyField source="tags" dest="info_text" /><uniqueKey>id</uniqueKey><fieldType name="string" class="solr.StrField" sortMissingLast="true" /><fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/> <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"><analyzer type="index"><tokenizer class="solr.StandardTokenizerFactory"/><filter class="solr.LowerCaseFilterFactory"/></analyzer><analyzer type="query"><tokenizer class="solr.StandardTokenizerFactory"/><filter class="solr.LowerCaseFilterFactory"/></analyzer></fieldType></schema>

注:solrconfig.xml配置文件里,requestHandler "/select"的缺省“df”是“text”。假设依照上面的配置。我们想要的缺省搜索info_text,所以须要在solrconfig.xml中改动:
<requestHandler name="/select" class="solr.SearchHandler">
     <lst name="defaults"> 
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<str name="defType">edismax</str>
<str name="df">info_text</str>
</lst>
    </requestHandler>


能够通过http api获取schema信息:
http://<ip>:8983/solr/<collection>/schema?wt=json
http://<ip>:8983/solr/<collection>/schema/fields?wt=json
http://<ip>:8983/solr/<collection>/schema/dynamicfields?wt=json
http://<ip>:8983/solr/<collection>/schema/copyfields?wt=json

(原创文章,转载请注明转自Clement-Xu的博客)


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/281209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wget整站抓取、网站抓取功能;下载整个网站;下载网站到本地

wget -r -p -np -k -E http://www.xxx.com 抓取整站 wget -l 1 -p -np -k http://www.xxx.com 抓取第一级 -r 递归抓取-k 抓取之后修正链接&#xff0c;适合本地浏览 http://blog.sina.com.cn/s/blog_669fb0c3010137bq.html wget -m -e robotsoff -k -E "http://…

Git标签tag及tag远程同步

Git给某个历史版本打上标签&#xff0c;这样我们可以快速的众多历史版本中找到自己需要的版本&#xff0c;一般打标签的版本都是发布版本&#xff0c;例如v1.0.0 标签操作 创建标签 # 轻量标签 git tag tagname eg: git tag v1.4# 附注标签 git tag -a tagname -m tag descr…

妙用SQL Server聚合函数和子查询迭代求和

先看看下面的表和其中的数据&#xff1a;t_product该表有两个字段&#xff1a;xh和price&#xff0c; 其中xh是主索引字段&#xff0c;现在要得到如下的查询结果&#xff1a;从上面的查询结果可以看出&#xff0c;totalprice字段值的规则是从第1条记录到当前记录的price之和。如…

记一次.NET某工控图片上传CPU爆高分析

一&#xff1a;背景 1.讲故事今天给大家带来一个入门级的 CPU 爆高案例&#xff0c;前段时间有位朋友找到我&#xff0c;说他的程序间歇性的 CPU 爆高&#xff0c;不知道是啥情况&#xff0c;让我帮忙看下&#xff0c;既然找到我&#xff0c;那就用 WinDbg 看一下。二&#xff…

微信小程序项目实践准备工作

微信小程序项目实践准备工作一、了解微信小程序产品定位及功能介绍微信小程序是一种全新的连接用户与服务的方式&#xff0c;它可以在微信内被便捷地获取和传播&#xff0c;同时具有出色的使用体验。简单的说&#xff0c;小程序是微信附属产品&#xff0c;需要依赖微信&#xf…

VSCode 用户自定义片段 snippet 基本语法说明

先上一个官方模板&#xff1a; "Print to console": {"prefix": "log","body": ["console.log($1);","$2"],"description": "Log output to console" }prefix 前缀&#xff0c;emmet 触发条…

Python集合和函数

深浅拷贝&#xff1a;.copy()方法&#xff0c;浅拷贝值拷贝一层。列表中的列表和字典会深拷贝&#xff0c;其他类型会浅拷贝。列表中的列表和字典会随着副本的修改而改变&#xff0c;其他类型不会随着副本的改变为改变。ab不是复制&#xff0c;是两个变量共享同一内存空间&…

从 WinDbg 角度理解 .NET7 的AOT玩法

一&#xff1a;背景 1.讲故事前几天 B 站上有位朋友让我从高级调试的角度来解读下 .NET7 新出来的 AOT&#xff0c;毕竟这东西是新的&#xff0c;所以这一篇我就简单摸索一下。二&#xff1a;AOT 的几个问题 1. 如何在 .NET7 中开启 AOT 功能在 .NET7 中开启 AOT 非常方便&…

.NET Core C#系列之XiaoFeng.ToCast万能类型转换器

数据类型相互转换如&#xff1a;字符串转整型&#xff0c;字符串转日期首先要引用 XiaoFeng命名空间下边三个扩展方法 就是类型转换的方法最常用的就是 ToCast<T>方法/// <summary> /// 类型相互转换 /// </summary> /// <typeparam name"T">…

利用 Git OpenSSH 查看/生成 本机 ssh 公钥

查看本机公钥 本机公钥文件一般用户目录下的.ssh文件夹&#xff0c;文件夹下有三个文件&#xff0c;分别是 id_rsa 私钥密码id_rsa.pub 公钥内容known_hosts 允许的host地址 使用文本编辑器查看文件id_rsa.pub文件即可 或者使用cat命令查看 # 任意位置打开 Git bash cd ~/.…

高斯消元法

有点线代的知识&#xff1a; const double EPS 1e-8; typedef vector<double> vec; typedef vector<vec> mat; //Ax b vec gauss_jordan(const mat &A, const vec &b) {int n A.size();mat B(n,vec(n1)); //定义大小for(int i0;i < n;i)for(int j0…

判断对象是否存在某个属性

JavaScript判断对象是否存在某个属性或者方法&#xff0c;常用方法有两种hasOwnProperty和in hasOwnProperty是Object原型对象上的一个方法&#xff0c;用来判断对象自身属性中是否具有指定的属性。 这个方法可以用来检测一个对象是否含有特定的自身属性&#xff1b;和 in 运…

【PPT】适配器模式 和 桥接模式

【PPT】适配器模式 和 桥接模式目录【PPT】适配器模式 和 桥接模式一、PPT 截图1.0、封面和目录1.1、设计模式概述1.2、结构型模式特点1.3、适配器模式1.4、桥接模式二、参考资料及 PPT 获取方法独立观察员 2022 年 11 月 15 日为之前公司准备的分享PPT&#xff0c;后来没用上。…

Flask 【第七篇】Flask中的wtforms使用

一、简单介绍flask中的wtforms WTForms是一个支持多个web框架的form组件&#xff0c;主要用于对用户请求数据进行验证。 安装&#xff1a; pip3 install wtforms 二、简单使用wtforms组件 1、用户登录 具体代码&#xff1a; from flask import Flask,render_template,request,…

CSS自定义滚动条样式

css通过滚动条伪类来修改滚动条样式&#xff0c;伪类名称如下 ::-webkit-scrollbar 滚动条整体部分 ::-webkit-scrollbar-track 滚动条轨道&#xff08;里面装有滑块 thumb&#xff09; ::-webkit-scrollbar-thumb 滚动条滑块 ::-webkit-scrollbar-button 滚动条轨道两端按钮 …

为了避免内存攻击,美国国家安全局提倡Rust、C#、Go、Java、Ruby 和 Swift,但将 C 和 C++ 置于一边...

本文翻译自两篇文章&#xff0c;第一篇是对美国国家安全局在“软件内存安全”网络安全信息表的解读&#xff0c;第二篇是普及什么是内存安全&#xff0c;为什么它很重要&#xff1f;第一篇 为了避免内存攻击&#xff0c;美国国家安全局提倡Rust、C#、Go、Java、Ruby 和 Swift&a…

自学python(一)

一、入门仪式 学习一门新语言必不可少的一件事&#xff1a; print("Hello world!")二、基础知识 1、注释&#xff1a; 单行注释&#xff1a; 1 print("Hello world!") #输出Hello world! 多行注释&#xff1a; 这是多行注释 这是多行注释 这是多行注释…

.NET周报【11月第2期 2022-11-15】

国内文章统一的开发平台.NET 7正式发布https://www.cnblogs.com/shanyou/archive/2022/11/09/16871945.html在 2020 年规划的.NET 5功能终于在.NET 7 完成了&#xff0c;为微软和社区一起为多年来将不同的开发产品统一起来的努力加冕&#xff0c;未来只有一个.NET, 回顾.NET 20…

如何像使用AspNetCore中的Controllers 和 Actions一样处理MQTT消息

在物联网项目中&#xff0c; 处理MQTT的topic时费工费力&#xff0c; 代码一团乱&#xff0c; 什么才是最好的姿势&#xff1f;这里面我们极力介绍 MQTTnet.AspNetCore.Routing 项目&#xff0c;MQTTnet AspNetCore Routing 是https://github.com/Atlas-LiftTech/MQTTnet.AspN…

chrome 悬停大图插件_Google Chrome浏览器的悬停卡:我不想要的我最喜欢的新东西

chrome 悬停大图插件If you only have a handful of open tabs in Google Chrome, it’s easy to tell what they are. But as you start to collect more tabs (or make the window smaller), it gets harder. That’s where Hover Cards come in. 如果您在Google Chrome浏览器…