Apache Solr9.3 快速上手
Apache Solr
简介
Solr是Apache的顶级开源项目,使用java开发 ,基于Lucene的全文检索服务器。 Solr比Lucene提供了更多的查询语句,而且它可扩展、可配置,同时它对Lucene的性能进行了优化。
安装
- 下载 : 下载地址
- 解压 :
tar -zxvf solr-9.3.0.tgz -C .
- 修改solr启动参数,取消健康检查,否则启动会报警告
cd /opt/solr/solr-9.3.0/bin/
vim solr.in.sh
- 修改内容
SOLR_ULIMIT_CHECKS=false
启动
solr不推荐使用root账户启动,这点与es也相同,当然可以直接用-force
参数,强制启动
./solr start -force
如果需要修改端口,可以通过-p
参数指定
./solr start -p 8089 -force
启动成功可以看到日志打印
➜ bin ./solr start -force
Waiting up to 180 seconds to see Solr running on port 8983 [|]
Started Solr server on port 8983 (pid=3786). Happy searching!➜ bin
访问服务器ip:8983,可查看到solr管理界面
http://localhost:8983/solr/#/
主要概念
core
在es中有索引这个概念,相当于mysql中的表(与mysql中的索引区分开来),而在solr中称之为核心 core, 所以我们可以看到页面上有一个core admin,就是用来管理核心的,个人更喜欢将其称之为索引,与es的概念形成关联记忆。
和数据库一样,solr的数据就是由一个个core组成。
doc
doc全称document, es中也有相同的概念,相当于数据库中的一行数据,一个doc也就表示的一个core中的一条数据
Schema
Schema类似于数据库中的表结构,以schema.xml的文本形式存在于conf目录下,在添加数据到索引中时,需要配置Schema。schema中包含:字段、字段类型、唯一键
分词
举个例子,我们想要搜索查询沙县小吃,那么传统的模糊查询是使用前后模糊匹配,类似 沙县小吃 ,这样的匹配模式,但如果我们的内容只有“沙县”,没有小吃时,就会导致匹配不到我们想要的信息。而分词不同,分词首先就将我们的搜索文本分割成一个个的词组,比如:沙县、小吃,然后分别匹配这些分词在哪个数据中出现的,将其匹配出来,并计算相关度得分。
倒排索引
说明了分词,我们需要继续讲解倒排索引,也叫反向索引,来帮助大家理解solr为什么能实现毫秒级的搜索体验
如下图为普通的正向索引,一句话被对应分割成了一组分词,当我们查询"china"时,会去各个文档的分词组中查询是否存在,这样的做法需要遍历每个文档,数据量较大时,明显就很慢了
而逆向索引的处理刚好相反,以分词为存储的主键,文档ID为值,这样能直接通过分词查询出哪些文档存在该关键字,通过文档ID是顺序存储的,那么也就意味着是有压缩空间的,具体大家可以参考之前书写的关于ES的分词压缩算法,核心思想类似:浅谈倒排索引的两种压缩算法:FOR算法和RBM算法
倒排索引的存储方式,其核心优势就在于当数量特别大时,其在性能的提高和空间上的节约
创建Core
通过管理画面http://ip:8983/solr的core Admin模块进行创建会失败,提示在新创建的core目录\conf\下找不到solrconfig.xml和managed-schema.xml,所以我们采用命令行的方式来创建Core。
PS D:\Apache\solr-9.3.0\solr-9.3.0\bin> .\solr.cmd create -c core_test1
WARNING: Using _default configset with data driven schema functionality. NOT RECOMMENDED for production use.To turn off: bin\solr config -c core_test1 -p 8983 -action set-user-property -property update.autoCreateFields -value falseCreated new core 'core_test1'
PS D:\Apache\solr-9.3.0\solr-9.3.0\bin>
- Overview: 概览,一些核心/索引的统计信息
- Analysis: 分词查询,如果想知道某个查询词会被分词成什么样,可在这里操作,类似es中的_analyze语句
- DataImport: 数据同步,分为增量同步和全量同步
- Documents: 数据新增或更新、删除,新增和更新用的都是/update,id存在则更新,不存在则新增
- Files: 配置文件信息,也提供了上传或下载文件到solr服务的功能,可以通过此自定义查询组件
- Ping: 用于测试与solr服务器之前的连接是否正常
- Plugins/Stats:插件管理页面,可以查看、启用、禁用已经安装了的solr插件
- Query:查询页面,提供在线查询solr数据的页面
- Replication:管理solr分片配置
- Schema:管理solr索引结构
- Segments info:查看solr索引的段信息,了解索引大小、文档数量、字段等信息
配置solr字段
添加字段有2种方法,可以通过web页面添加,也可以直接修改schema文件添加。
属性 | 说明 | 取值 | 默认值 |
---|---|---|---|
stored | 是否存储,一个字段是否被存储,取决于你是否想在solr的查询结果中得到它,也就是说你是否想在查询结果中看到它,它将会消耗cpu和io和磁盘空间等资源。 | true/false | true |
indexed | 字段是否创建索引,索引的字段是在搜索的时候可以用它来查询或排序,在lucene中,被索引的字段将会建立倒排表。 | true/false | true |
uninvertible | 如果为 true,则表示一个 indexed=“true” docValues=“false” 字段在查询时可以用“un-inverted”构建大内存数据结构以代替 DocValues。 出于历史原因,默认为 true,但强烈建议用户将其设置 false 以保持稳定性,并据需要使用 docValues=“true”。 | true/false | true |
docValues | 字段的值是否放在面向列的 DocValues 结构中 | true/false | false |
multiValued | 设置为true表示此字段可以存储多个值,意思是这个字段在一个文档中可以存储多个值的内容。 | true/false | false |
required | 是否必须。如果为 true,则 Solr 拒绝任何添加没有此字段的文档。 | true/false | false |
default | 字段的默认值,经常用在字段是必须的,但是有时候又无法提供的情况,solr就会用默认值替代。如: <field name="recordTime" type="date" indexed="true" stored="true" required="true" default="NOW+8HOUR"/> 标示recordTime如果没有提供,用当前的时间+8个小时作为recordTime的时间,加8小时是因为solr默认时区是0时区,按照中国北京时间(东8区)算,需要加上8个小时。 |
修改managed-schema
在core的conf下的managed-schema文件中增加字段配置
<!-- 自定义的字段,id已经存在不需要设置 -->
<field name="dd" type="string" indexed="true" stored="true"/>
<field name="age" type="pint" indexed="true" stored="true" />
<field name="description" type="text_ik" indexed="true" stored="true" />
<field name="createTime" type="pdate" indexed="true" stored="true" />
<field name="updateTime" type="pdate" indexed="true" stored="true" />
添加后到“Core Admin”中刷新一下核即可
添加数据
现在core已经建好了,但是里面还没有数据,这里我们使用json添加以便快速演示(支持 JSON,、CSV、XML等格式),一般生产环境下都是从数据库访问。
准备json数据:
{"id": "11","age": 40,"name": "李白","description": "创造了古代浪漫主义文学高峰、歌行体和七绝达到后人难及的高度"},
{"id": "12","age": 31,"name": "杜甫","description": "唐代伟大的现实主义文学作家,唐诗思想艺术的集大成者"}
找到该core的Documents菜单,选择文档类型未JSON,把刚才准备的数据粘贴进来,确认无误提交
查询
现在验证一下查询一下
安装中文分词器
下载地址
将ik-analyzer-8.5.0.jar放入solr目录下
存放于 *solr-9.1.0\server\solr-webapp\webapp\WEB-INF\lib* 目录下
编辑 D:\Apache\solr-9.3.0\solr-9.3.0\server\solr\core_test1\conf\managed-schema.xml
查询
到core的分词菜单中验证一下description字段是否按中文分词了,可以看到一件按照中文的分词习惯进行了分词。
相关文章:
Apache Solr9.3 快速上手
Apache Solr 简介 Solr是Apache的顶级开源项目,使用java开发 ,基于Lucene的全文检索服务器。 Solr比Lucene提供了更多的查询语句,而且它可扩展、可配置,同时它对Lucene的性能进行了优化。 安装 下载 : 下载地址解压 : tar -zxv…...
按关键字搜索淘宝商品API接口获取商品销量、优惠价、商品标题等参数示例
关键词搜索商品接口的作用是提供搜索功能,让用户根据关键词在电商平台上搜索商品,并根据搜索条件和偏好获取相关的商品列表和推荐结果,提高用户购物体验和准确度。对于电商平台而言,这个接口也能帮助用户发现更多商品、提升销量和…...
【外汇天眼】价格波动的节奏感:优化止盈方法!
止盈,依然是一种经验,而不是一种技术。它涉及到价格波动的灵活应对,以确保我们不会错失潜在的盈利,同时也不会让盈利被逆市波动所侵蚀。以下是关于如何有效实施止盈策略的一些建议: 首先,我们要明确&#…...
VMvare虚拟机安装国产麒麟V10桌面操作系统
一、系统下载 进入银河麒麟官网:https://www.kylinos.cn/ 选择桌面操作系统,然后进入操作系统版本选择页面,选择银河麒麟桌面操作系统V10 选择后,进入系统介绍页面,然后点击申请试用 点击后进入申请页面…...
Golang--channel+waitGroup控制并发量
文章目录 channelwaitGroup控制并发量前言示例 channelwaitGroup控制并发量 前言 golang的goroutine非常轻量级,同时启动数万协程都没问题。如果不对并发量进行控制,比如同时产生数百万的协程,会压垮服务器通过控制channel缓冲区的大小&…...
前端【响应式图片处理】之 【picture标签】
目录 🌟前言🌟目前最常见的解决方案🌟新的解决方案<picture>🌟<picture>的工作原理🌟<picture> 兼容性解决方案🌟写在最后 🌟前言 哈喽小伙伴们,前端开发过程中经…...
js实现链式调用,查询和处理数据
实现一个 query 方法,实现对数据的链式查询和处理 要求如下 query 传入参数为原始数据(数组格式,每个元素都是对象) 通过进行链式调用对数据执行操作,支持的方法有where(predicate): 根据参数的条件进行筛选࿰…...
阿里云 腾讯云 配置二级域名并解析指向非80端口操作指南
目标:主域名 imps.com 已完成配置,新增配置 kpi.imps.com 等二级域名并指向 8083 端口。 (此操作需要主域名已经通过备案3天后,最好指向的IP地址网站也通过了备案申请,否则会提示域名没有备案。) 操作流程…...
菜单子节点的写法
菜单子节点的写法 1.测试数据2.实现代码3.获取父ID层级 1.测试数据 1.表结构SQL CREATE TABLE test (id int DEFAULT NULL,u_id int DEFAULT NULL,p_u_id int DEFAULT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_general_ci;2.数据SQL INSERT INTO test (i…...
系统架构设计:9 论软件系统架构评估及其应用
目录 一 架构评估的意义 1 性能 2 可用性 3 安全性 4 可修改性 5 易用性...
javaee SpringMVC中json的使用
jsp <%--Created by IntelliJ IDEA.User: 呆萌老师:QQ:2398779723Date: 2019/12/6Time: 15:55To change this template use File | Settings | File Templates. --%> <% page contentType"text/html;charsetUTF-8" language"java" %> <%St…...
【系统架构】软件架构的演化和维护
导读:本文整理关于软件架构的演化和维护知识体系。完整和扎实的系统架构知识体系是作为架构设计的理论支撑,基于大量项目实践经验基础上,不断加深理论体系的理解,从而能够创造新解决系统相关问题。 目录 1、软件架构演化和定义 …...
一盏茶的功夫帮你彻底搞懂JavaScript异步编程从回调地狱到async/await
🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 📘 1. 引言 📘 2. 使用方法 📘 3. 实现原理 📘 4. 写到最后…...
前后端分离计算机毕设项目之基于SpringBoot的无人智慧超市管理系统的设计与实现《内含源码+文档+部署教程》
博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…...
从0开始python学习-31.selenium 文本输入框、下拉选择框、文件上传、时间插件选择元素定位
目录 1. 纯文本输入框 2. 存在默认值的文本输入 3. 下拉选择框 4. 输入后下拉选择框 5. 文件上传 6. 时间插件 1. 纯文本输入框 driver.find_element(By.XPATH,/html/body/div[2]/td[2]/input).send_keys(测试名称) 2. 存在默认值的文本输入 注意: 1. 这种存…...
MyCat-web安装文档:安装Zookeeper、安装Mycat-web
安装Zookeeper A. 上传安装包 zookeeper-3.4.6.tar.gzB. 解压 #解压到当前目录,之后会生成一个安装后的目录 tar -zxvf zookeeper-3.4.6.tar.gz#加上-c 代表解压到指定目录 tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local/C. 在安装目录下,创建数据…...
Ajax跨域访问,访问成功但一直走error不走success的的问题解决
Ajax跨域访问,访问成功但一直走error不走success的的问题解决 通过搜索各种资料,终于解决啦,废话不多说了,还是老规矩直接上代码: 我这里用了jsonp,有想了解的点击 : jsonp 前端代码: $.ajax({type:post…...
水星 Mercury MIPC251C-4 网络摄像头 ONVIF 与 PTZ 云台控制
概况 最近在 什么值得买 上发现一款水星的网络摄像头, 除了支持云台/夜视功能之外, 还标明支持 onvif 协议. 所以想着买来接入到 HomeAssistat 作为监控使用.可到手之后发现事情并没有那么简单, 记录如下. 接入 HomeAssistant 按照 HA 的文档 ONVIF Camera 接入无非就是配置文件…...
Reactor 模式网络服务器【I/O多路复用】(C++实现)
前导:本文是 I/O 多路复用的升级和实践,如果想实现一个类似的服务器的话,需要事先学习 epoll 服务器的编写。 友情链接: 高级 I/O【Linux】 I/O 多路复用【Linux/网络】(C实现 epoll、select 和 epoll 服务器&#x…...
2019年[海淀区赛 第2题] 阶乘
题目描述 n的阶乘定义为n!n*(n -1)* (n - 2)* ...* 1。n的双阶乘定义为n!!n*(n -2)* (n -4)* ...* 2或n!!n(n - 2)*(n - 4)* ...* 1取决于n的奇偶性,但是阶乘的增长速度太快了,所以我们现在只想知道n!和n!!末尾的的个数 输入格式 一个正整数n ÿ…...
CMM—软件企业走向世界的通行证
正当我国计算机软件行业2000年实现产值235亿元,为自己九十年代年均30%的增长沾沾自喜的时候,从邻国印度传来捷报:1999-2000年度,印度软件产业实现产值56.5亿美元,其中出口40.5亿美元,占目前印度出口总额的1…...
基于FPGA的图像形态学腐蚀算法实现,包括tb测试文件和MATLAB辅助验证
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 将FPGA的仿真结果导入到MATLAB,结果如下所示: 2.算法运行软件版本 vivado2019.2 matlab2022a 3.部分核心程序 timescale 1ns / 1ps…...
华为云云耀云服务器L实例评测|RabbitMQ的Docker版本安装 + 延迟插件安装 QQ邮箱和阿里云短信验证码的主题模式发送
前言 最近华为云云耀云服务器L实例上新,也搞了一台来玩,期间遇到各种问题,在解决问题的过程中学到不少和运维相关的知识。 本篇博客介绍RabbitMQ的Docker版本安装和配置,延迟插件的安装;结合QQ邮箱和阿里云短信验证码…...
解决Linux安装AppImage文件chrome-sandbox出错问题
问题产生 在Linux版Another Redis Desktop Manager的时候,打开无反应,使用命令行运行,出现了下面的报错信息: linux: FATAL:setuid_sandbox_host.cc(158)] The SUID sandbox helper binary was found, but is not configured co…...
Axios、SASS学习笔记
目录 前言 一、Axios基础认识 1、简介 2、相关文档 3、基本配置 4、基础快捷使用 二、Axios封装 1、公共配置文件 2、细化每个接口的配置 3、使用并发送请求 三、SASS 1、简介 2、相关文档 3、使用前奏 4、使用变量 5、嵌套规则 6、父级选择器标识 & 前言…...
开发工作中常用到的免费API分享
企业行政许可:通过公司名称/公司ID/注册号或社会统一信用代码获取企业行政许可信息,企业行政许可信息包括许可文件名称、决定许可机关、许可内容、决定日期/有效期自、截止日期/有效期至、数据来源等。企业作品著作权:通过公司名称/公司ID/注…...
外汇天眼:三大方法提高容错率——成功投资者的秘密策略!
容错率是什么? 虽然A股市场投资体验不佳,但相较于中概股市场的波动,A股投资者仍有幸福感。以中概股的代表,金龙指数ETF为例,仅一年多时间内从85.90元下跌至20.47元,跌幅高达76%。 然而,有一位…...
设计模式-状态模式
介绍 一个对象有状态变化每次状态变化都会触发一个逻辑不能总是用if else来控制 示例 交通信号灯不同颜色的变化 UML类图 传统UML类图 简化后的UML类图 代码演示 // 状态(红灯、绿灯、黄灯) class State {constructor(color) {this.color col…...
支持多种格式照片处理软件Lightroom Classic 2022 mac中文功能特点
Lightroom Classic 2022 mac是一款专业级数字图像处理软件,主要用于数字照片的后期处理和管理。它提供了丰富的工具和功能,可以帮助用户对照片进行调整、修饰、管理和分享。 Lightroom Classic 2022 mac软件功能和特点 RAW格式支持:Lightroo…...
UML简介
UML,全称为Unified Modeling Language(统一建模语言),是一种用于软件工程和系统设计的标准化建模语言。它提供了一套图形化的符号和标记,用于描述和表示软件系统、系统架构、流程、数据结构、行为和交互。UML的设计旨在…...
会计信息系统网站建设流程图/今日热点头条
今天真机调试,程序在手机上启动时闪退,之后xcode提示: failed to get the task for process XXXX。这个问题,是因为证书不对引起的。 解决方案:点击“Targets”->“Build Settings”->”Code Signing”->”P…...
化州市建设局网站/怎样制作网页新手自学入门
随着社会的发展,以手机为代表的数码产品在我们的生活中扮演者越来越重要的角色,以至于很多人彻底依赖上他们。与之配套的一些小物件也开始走入我们的生活,从小巧精致的充电宝,到外观酷炫的机械键盘,这些设计感和实用性…...
潍坊大型网站建设/自己开平台怎么弄啊
Java中的位运算符中有一个叫做异或的运算符,符号为(^)或者 Xor异或8个字总结 相同出0 不同出1int a1;int b1;System.out.println(a^b);这里则输出 0int a12;int b0;System.out.println(a^b);这里则输出 12小结: 相同的两个数会输出0既false ,…...
东莞市产品网络推广/搜索引擎优化方法总结
最近在Ubuntu 18.4上安装Nvidia显卡后,显卡似乎总是不能完全兼容。 第一次出现问题时,是登录账号后,发现系统采用了默认显卡驱动,而已装过的显卡驱动则有损坏导致无法使用。 第二次出现问题时,则是在开机启动后&#x…...
上海网站哪家好/外贸网站
3.设置背景图片 Background-image:url(相对路径) ----123.jpg图片拉伸铺满: background-size:cover 铺满方向: background-repeat:repeat-x/repeat-y/no-repeat(横向铺满/纵向铺满/不铺满显示左上角) 图片方位: backgr…...
做网站推广的前期条件/自己如何制作网页
(1)位图法 所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的(百度百科)。 例如:对{0, 1, 5,3…...