【Solr】Solr搜索引擎下载、安装、使用及跟Elasticsearch的对比(保姆篇)

news2024/12/25 12:58:50

在这里插入图片描述

文章目录

    • Solr简单介绍
    • Solr 版本与 JDK版本 兼容情况
    • 安装与配置(Windows)
    • 安装与配置(Linux)
    • 应用案例(电商产品搜索系统)
    • 为什么要用Solr,不用数据库的模糊查询
    • Solr对比Elasticsearch

更多相关内容可查看

Solr官方文档:https://solr.apache.org/guide/solr/latest/index.html

Solr简单介绍

Apache Solr是一个跟Elasticsearch概念相同的一个并都基于Apache Lucene的开源搜索平台,旨在为企业和应用提供强大的搜索能力。它支持多种数据类型的搜索,并提供丰富的功能,如全文检索、快速搜索、分面搜索、高亮显示、地理搜索等。


Solr 版本与 JDK版本 兼容情况

  • Solr 6.x 和 7.x:
    兼容 JDK 8:从 Solr 6.0 开始,Solr 对 JDK 8 的支持变得更加稳定。Solr 6.x 及 7.x 版本通常是与 JDK 8 完全兼容的。 推荐的 JDK 版本:JDK 8 是这些版本推荐的运行环境。尽管它们也支持 JDK 7,但
    JDK 8 的支持更为广泛和稳定。
  • Solr 8.x:
    兼容 JDK 8 到 JDK 11:Solr 8.x 版本开始支持 JDK 8、JDK 9、JDK 10 和 JDK 11。具体来说: Solr 8.0 到 8.4 版本推荐使用 JDK 8 或 JDK 11。 但是,Solr 8.5 及以上版本对
    JDK 8 的支持逐渐减少,主要推荐使用 JDK 11。 注意:虽然 Solr 8.x 支持 JDK 8,但在 8.5 版本后,JDK
    8 的支持逐步被削弱。对于长时间支持(LTS)的版本,建议使用 JDK 11。
  • Solr 9.x:
    不再兼容 JDK 8:Solr 9.x 版本已经不再支持 JDK 8,只支持 JDK 11 或更高版本。Solr 9.0 和后续版本要求 JDK 11 或更高版本来运行。

安装与配置(Windows)

JDK8下载地址:https://archive.apache.org/dist/lucene/solr/4.10.3/

在这里插入图片描述

JDK11下载地址:https://solr.apache.org/downloads.html

在这里插入图片描述

下载完解压后的文件夹内容

在这里插入图片描述

cmd进入bin路径下输入,,如下

solr.cmd start

这里如果JDK报错,请先安装JDK8及以上

在这里插入图片描述

打开浏览器输入https://localhost:8983/solr

在这里插入图片描述
创建 code 核心并添加 conf 配置文件

在这里插入图片描述
这里因为缺失配置文件会报错,需要手动添加一下

在这里插入图片描述
创建后找到 server\solr\ 创建核心新建的文件夹,从 solr-7.7.2\example\example-DIH\solr\solr 中找到配置文件复制到新建文件夹

在这里插入图片描述

重启服务
在这里插入图片描述

成功示例

在这里插入图片描述
测试查询使用
在这里插入图片描述
成功示例
在这里插入图片描述

安装与配置(Linux)

安装Solr

  1. 下载Solr:

    wget https://archive.apache.org/dist/lucene/solr/8.10.1/solr-8.10.1.tgz
    
  2. 解压并进入目录:

    tar xzf solr-8.10.1.tgz
    cd solr-8.10.1
    
  3. 启动Solr:

    bin/solr start
    
  4. 验证安装:
    打开浏览器,访问http://localhost:8983/solr/,你应该能看到Solr的管理界面。

创建Solr核心

  1. 创建核心:

    bin/solr create -c mycore
    
  2. 配置核心:
    进入solr/mycore/conf目录,修改solrconfig.xmlschema.xml,配置字段类型和请求处理器。

配置schema.xml

schema.xml中定义文档的字段及其属性。例如:

<field name="id" type="string" indexed="true" stored="true" required="true"/>
<field name="title" type="text_general" indexed="true" stored="true"/>
<field name="content" type="text_general" indexed="true" stored="true"/>
<field name="author" type="string" indexed="true" stored="true"/>

数据导入与索引

创建一个名为data.json的文件,内容如下:

[
    {
        "id": "1",
        "title": "Solr Basics",
        "content": "Apache Solr is a powerful search platform.",
        "author": "John Doe"
    },
    {
        "id": "2",
        "title": "Understanding Lucene",
        "content": "Lucene is the underlying library used by Solr.",
        "author": "Jane Doe"
    }
]

使用以下命令将数据导入Solr:

curl -X POST -H 'Content-Type: application/json' --data-binary @data.json http://localhost:8983/solr/mycore/update?commit=true

基本查询

在Solr中,查询可以通过HTTP请求进行。基本查询的URL格式为:

http://localhost:8983/solr/mycore/select?q=关键词

例如,要查询标题中包含“Solr”的文档,可以使用:

http://localhost:8983/solr/mycore/select?q=title:Solr

高级查询

Solr支持多种查询方式,包括布尔查询、范围查询等。例如:

  • 布尔查询:
http://localhost:8983/solr/mycore/select?q=title:(Solr OR Lucene)
  • 范围查询:
http://localhost:8983/solr/mycore/select?q=author:("John Doe" TO "Jane Doe")

分面搜索

分面搜索允许用户在搜索结果中按特定字段进行筛选。例如,获取作者的分面信息:

http://localhost:8983/solr/mycore/select?q=*:*&facet=true&facet.field=author

高亮显示

为了在搜索结果中突出显示关键词,可以使用高亮功能:

http://localhost:8983/solr/mycore/select?q=Solr&hl=true&hl.fl=content

应用案例(电商产品搜索系统)

设计数据模型

  • id:产品ID
  • name:产品名称
  • description:产品描述
  • price:产品价格
  • category:产品类别

使用命令创建电商产品核心:

bin/solr create -c ecommerce

schema.xml中添加产品字段:

<field name="id" type="string" indexed="true" stored="true" required="true"/>
<field name="name" type="text_general" indexed="true" stored="true"/>
<field name="description" type="text_general" indexed="true" stored="true"/>
<field name="price" type="float" indexed="true" stored="true"/>
<field name="category" type="string" indexed="true" stored="true"/>

创建一个JSON文件products.json

[
    {
        "id": "1",
        "name": "Laptop",
        "description": "A high-performance laptop.",
        "price": 999.99,
        "category": "Electronics"
    },
    {
        "id": "2",
        "name": "Smartphone",
        "description": "A smartphone with excellent features.",
        "price": 499.99,
        "category": "Electronics"
    }
]

使用以下命令导入数据:

curl -X POST -H 'Content-Type: application/json' --data-binary @products.json http://localhost:8983/solr/ecommerce/update?commit=true

用户可以通过以下方式搜索产品:

http://localhost:8983/solr/ecommerce/select?q=name:Laptop

为了提高用户体验,可以添加分面搜索功能,允许用户按类别筛选产品:

http://localhost:8983/solr/ecommerce/select?q=*:*&facet=true&facet.field=category

为什么要用Solr,不用数据库的模糊查询

1 .其实正如上面solr的介绍中所说的那样,solr本身也可以看成数据库,(no sql类型),但它比数据库搜索速度更快,所以在项目中我们一般把搜搜的部分交给solr,就像我们在京东首页所看到的商品信息,并不是来自数据库,而是来源于solr的索引库

2.数据库本身不能实现分词效果,而只能使用模糊查询,但是模糊查询非常低效,查询速度比较慢,由于在实际生活中,一般搜索是用的比较多的,这样数据库压力自然就很大,所以我们就让供专业的solr来做搜索功能


Solr对比Elasticsearch

可能大家对于搜索引擎更熟悉于Elasticsearch,以下可以在不同的场景下来考虑选择哪一种

1. 架构和设计

  • Solr

    • 基于Apache Lucene:Solr是一个独立的搜索平台,使用Java编写,依赖于Lucene库进行全文检索。
    • 配置和管理:Solr的配置通常通过XML文件进行,支持复杂的查询、分面搜索和聚合。
    • 传统应用:Solr更适合需要复杂搜索功能的企业应用,特别是在基于数据的报表和分析方面。
  • Elasticsearch

    • 分布式搜索引擎:Elasticsearch也是基于Lucene,但它是分布式的,支持多节点集群。
    • RESTful API:提供了简单易用的RESTful API,便于与其他服务集成,使用JSON格式进行数据交互。
    • 实时搜索:Elasticsearch支持实时数据索引和查询,更适合需要快速响应的应用,如日志分析和监控。

2. 功能和特性

  • Solr

    • 丰富的查询能力:支持复杂的查询,包括高亮、分面、地理位置搜索等。
    • 分面搜索:提供强大的分面功能,适合电商网站和内容管理系统。
    • 数据导入:支持通过数据导入工具(DIH)从多种数据源(如数据库)进行索引。
  • Elasticsearch

    • 聚合查询:支持多种类型的聚合,可以实现复杂的统计分析。
    • 数据类型支持:更好的支持文档数据结构,适合半结构化数据(如JSON)。
    • 全文检索:对文本数据提供更强的全文检索能力,包括多种语言的分析支持。

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

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

相关文章

JAVA智能代驾跑腿系统一站式服务系统源码小程序

​探索“智能代驾跑腿系统”的便捷魅力 &#x1f697; 一、智能代驾&#xff1a;安全出行的首选 在这个快节奏的城市生活中&#xff0c;偶尔的聚会小酌或深夜加班后&#xff0c;如何安全回家成了不少人心中的小困扰。幸运的是&#xff0c;“智能代驾跑腿系统”应运而生&#x…

RJ45网线T568B接法

目录 1.说明 2.应用 3.方法 4.网络制作注意 1.说明 常规的网线T568B和T568A&#xff0c;为了保持最佳的兼容性&#xff0c;普遍采用T568B标准来制作。 2.应用 T568B:主要应用于平行线(即直连线)和交叉线(用于两台设备之间的直接连接&#xff0c;如两台计算机互连或计算机…

应用商店上新:MainConcept Transcoder和Live Streaming Software App

在Akamai云计算平台上运行工作负载的你也许还不知道&#xff0c;为了帮助用户更容易地找到并快速部署各类解决方案&#xff0c;Akamai提供了一个丰富的应用商店&#xff08;Marketplace&#xff09;&#xff0c;其中包含各类经过验证&#xff0c;可以在Akamai云计算平台上轻松部…

自由学习记录(7)

文件的判断是否存在&#xff0c;带上文件自己的名字 XmlSerializer (Person)serializer.Deserialize(reader); 如果出错之后&#xff0c;没有try来接&#xff0c;就会直接程序报错暂停&#xff0c; 有了的话无论如何都会继续正常进final using则是正常 为什么要用 using&a…

DICOM是什么?如何成为医学成像和通讯的国际标准的?

DICOM DICOM是医学数字成像和通信标准&#xff08;Digital Imaging and Communications in Medicine&#xff09;&#xff0c;它是一种用于描述医学图像及其元数据如何存储和在设备间传输的标准。 DICOM标准支持多种医学成像模态的数据存储&#xff0c;包括CT、PET、MRI、X射线…

Golang | Leetcode Golang题解之第478题在圆内随机生成点

题目&#xff1a; 题解&#xff1a; type Solution struct {radius, xCenter, yCenter float64 }func Constructor(radius, xCenter, yCenter float64) Solution {return Solution{radius, xCenter, yCenter} }func (s *Solution) RandPoint() []float64 {r : math.Sqrt(rand.…

【视觉分割新SOTA|论文解读4】一种最先进的图像分割模型SAM——Zero-Shot Transfer ExperimentsDiscussion

【视觉分割新SOTA|论文解读4】一种最先进的图像分割模型——Segment Anything Model (SAM)——Zero-Shot Transfer Experiments&Discussi 【视觉分割新SOTA|论文解读4】一种最先进的图像分割模型——Segment Anything Model (SAM)——Zero-Shot Transfer Experiments&…

iOS 18.0.1 修復 iPhone 16 觸控失靈、訊息過早錄音等問題

上月末不少 iPhone 16、16 Pro 用戶表示自己的螢幕出現了觸摸後突然大面積無法響應的情況&#xff0c;當時我們猜測 Apple 會推出相應的修復更新&#xff0c;如今為解決這個問題而來的 iOS 18.0.1 終於正式上線了。不過在更新日誌中&#xff0c;官方並未說明導致斷觸的具體原因…

【企业办公系统】签到及考勤数据管理

员工在系统点击签到时&#xff0c;系统会从是否工作日、是否请假、签到时间和地点是否正确上进行判断&#xff0c;确定是否计入考勤。其中&#xff0c;考勤状态分为正常、地区异常、早退异常、迟到异常、旷工异常。此外&#xff0c;除了通过逻辑判断以外&#xff0c;系统还需要…

Xilinx UltraScale系列FPGA纯verilog图像缩放,工程项目解决方案,提供2套工程源码和技术支持

目录 1、前言工程概述免责声明FPGA高端图像处理培训 2、相关方案推荐我这里已有的FPGA图像缩放方案本方案在Xilinx Artix7 系列FPGA上的应用本方案在Xilinx Kintex7 系列FPGA上的应用本方案在Xilinx Zynq7000 系列FPGA上的应用本方案在国产FPGA紫光同创系列上的应用本方案在国产…

Python OpenCV精讲系列 - 目标检测与识别深入理解(二十)

&#x1f496;&#x1f496;⚡️⚡️专栏&#xff1a;Python OpenCV精讲⚡️⚡️&#x1f496;&#x1f496; 本专栏聚焦于Python结合OpenCV库进行计算机视觉开发的专业教程。通过系统化的课程设计&#xff0c;从基础概念入手&#xff0c;逐步深入到图像处理、特征检测、物体识…

java ---- 关于接口的常见面试题

&#x1f680; 个人简介&#xff1a;某大型国企资深软件开发工程师&#xff0c;信息系统项目管理师、CSDN优质创作者、阿里云专家博主&#xff0c;华为云云享专家&#xff0c;分享前端后端相关技术与工作常见问题~ &#x1f49f; 作 者&#xff1a;码喽的自我修养&#x1f9…

前端学习-css的元素显示模式(十五)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 什么是元素显示模式 块元素 常见的块元素 块元素的特点 注意 行内元素 行内元素的特点 注意 行内块元素 行内块元素的特点 元素显示模式的转换 语法格…

决策智能与强化学习:重放比率(replay ratio)

知乎&#xff1a;DILab决策实验室&#xff08;已授权&#xff09;链接&#xff1a;https://zhuanlan.zhihu.com/p/898641863 0. 概览 近年来&#xff0c;深度强化学习&#xff08;Deep Reinforcement Learning, DRL&#xff09;在诸多领域取得了显著的成果。然而&#xff0c;随…

01电力电子技术介绍

电力电子技术介绍 介绍 讲到电力电子技术就要先说说一位老先生&#xff0c;他就是威廉纽厄尔&#xff08;William Newell&#xff09;。1972年&#xff0c;他在美国杜克大学首次提出了电力电子的概念。电力电子的概念可以表示为一个倒三角的关系。 首先&#xff0c;我们看到电…

C# WinForm实现画笔签名及解决MemoryBmp格式问题

目录 需求 实现效果 开发运行环境 设计实现 界面布局 初始化 画笔绘图 清空画布 导出位图数据 小结 需求 我的文章 《C# 结合JavaScript实现手写板签名并上传到服务器》主要介绍了 web 版的需求实现&#xff0c;本文应项目需求介绍如何通过 C# WinForm 通过画布画笔…

Gitxray:一款基于GitHub REST API的网络安全工具

关于Gitxray Gitxray是一款基于GitHub REST API的网络安全工具&#xff0c;支持利用公共 GitHub REST API 进行OSINT、信息安全取证和安全检测等任务。 Gitxray&#xff08;Git X-Ray 的缩写&#xff09;是一款多功能安全工具&#xff0c;专为 GitHub 存储库而设计。它可以用于…

NASA:ARCTAS 区域的二级 FIRSTLOOK 气溶胶产品子集。 它包含气溶胶光学深度和粒子类型,以及相关的大气数据

目录 简介 信息 代码 引用 网址推荐 知识星球 机器学习 MISR L2 FIRSTLOOK Aerosol Product subset for the ARCTAS region V001 简介 这是 ARCTAS 区域的二级 FIRSTLOOK 气溶胶产品子集。 它包含气溶胶光学深度和粒子类型&#xff0c;以及相关的大气数据&#xff0c;…

基于Segment Anything 模型的智能抠图开发的产品原型,基于官网案例升级改造

最近在研究图像处理的过程中&#xff0c;接触到了Mate开源的 Segment Anything模型&#xff0c;花点时间研究了一番&#xff0c;之前也写了一篇部署模型的教程&#xff0c;感兴趣的同学可以查看一下之前的文章 基于丹摩DAMODEL部署Segment Anything 模型&#xff0c;智能分割一…

多模态模型架构的演进

人工智能咨询培训老师叶梓 转载标明出处 多模态学习正成为连接不同类型数据&#xff08;如图像、文本、音频等&#xff09;的桥梁。随着深度学习技术的发展&#xff0c;多模态模型在理解和处理跨领域数据方面表现出了显著的效能。来自普渡大学、混沌工业公司、斯坦福大学和亚马…