solr的使用详解

article/2025/9/18 20:26:45

一、Solr简介

        由于搜索引擎功能在门户社区中对提高用户体验有着重在门户社区中涉及大量需要搜索引擎的功能需求,目前在实现搜索引擎的方案上有几种方案可供选择: 

  • 基于Lucene自己进行封装实现站内搜索。工作量及扩展性都较大,不采用。 
  • 调用Google、Baidu的API实现站内搜索。同第三方搜索引擎绑定太死,无法满足后期业务扩展需要,暂时不采用。 
  • 基于Compass+Lucene实现站内搜索。适合于对数据库驱动的应用数据进行索引,尤其是替代传统的like ‘%expression%’来实现对varchar或clob等字段的索引,对于实现站内搜索是一种值得采纳的方案。但在分布式处理、接口封装上尚需要自己进行一定程度的封装,暂时不采用。 
  • 基于Solr实现站内搜索。封装及扩展性较好,提供了较为完备的解决方案,因此在门户社区中采用此方案,后期加入Compass方案。

Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用Solr 创建的索引。

二、Solr下载及安装

1.由于solr是java语言编写,需要JDK支持,先安装JDK8;

2.下载Solr,最新版本8.0.0 地址:http://mirrors.shu.edu.cn/apache/lucene/solr/8.0.0/       (Windows版本箭头所示)

3.下载solr所需的IK分词器及mysql数据库连接jar和配置文件等资源文件,可用楼主自己收集的solr所需资源文件。

下载地址:https://download.csdn.net/download/javayoucome/11068587

4.解压下载好的solr-8.0.0.zip,例如解压到桌面,目录结构如下:

5.运行Solr

Solr的运行分为单机运行和集群运行,一般项目单机版就够用,访问量大的项目需要集群版,集群版配置较复杂,可自行配置,这里为速度入门以单机为例:

5.1 在bin目录下执行bin/solr start 此命令会启动solr应用服务器默认端口为8983,如果想指定端口号启动可以加参数–p例 如:solr start –p 8888,如下图表示启动成功。

solr的相关命令   不加   -p 端口  默认8983:

  • solr start -p 端口号  (指定端口启动)
  • solr stop -p 端口号(指定端口关闭)
  • solr restart -p 端口号(指定端口重启)
  • solr status (查看solr运行状态)

5.2 启动solr服务器后,浏览器直接访问127.0.0.1:8983访问solr服务器后台。

安装完成。

三、Solr的使用。

先介绍下solr的使用流程:1、创建索引字段 2、添加索引数据  3、查询索引数据 4、更新索引数据

白话解释:现在solr服务器里什么数据都没有,首先你得和类似数据库先创建一些你要查询的字段,在solr里叫做“索引”,创建好了索引如“id”,"name","price",再往这些索引中添加一些数据,之后再查询这些数据,还可以对索引数据所更新。

本文主要以创建索引字段和添加索引数据为主要介绍,查询索引的内容可自行查找,因为查询数据中的复杂查询知识较多并包括solrj客户端的使用,篇幅有限,请见谅。

1.Core

solr中一个核心(core)相当于一个搜索引擎,sole想要创建索引需要创建一个Core,可理解为数据的表。

创建Core有2种方法:

第一种:命令创建Core(推荐)

  • # 创建core,-c指定创建的core名
    示例:./solr create -c wtao_core
  • # 删除core,-c指定删除的core名
    示例:./solr delete -c wtao_core

第二种:使用控制台创建core(如下图)

创建完core后可查看对应的目录结构

2.创建完core后,主角要登场了>>创建索引字段 (下图是自己core中配置索引的文件)

创建索引,solr自带很多默认类型,如pint,string,pflou等t等,但支持中文类型solr没有,需要自己先创建一个中文分词的类型,主流的使用IKAnalyzer分词器。

2.1 将分词器的两个jar(ik-analyzer-solr5-5.x.jar,solr-analyzer-ik-5.1.0.jar)放在\solr-8.0.0\server\solr-webapp\webapp\WEB-INF\lib目录下。

2.2在\solr-8.0.0\server\solr-webapp\webapp\WEB-INF\下创建classes文件夹,将ik分词器的三个配置文件放入里面(如图)

2.3将下面配置粘贴到自己的core文件夹下的conf下的managed-schema文件中。即可在索引字段使用此类型。

<!-- 中文分词 -->
<dynamicField name="*_txt_ik" type="text_ik"  indexed="true"  stored="true"/>
<fieldType name="text_ik" class="solr.TextField"><analyzer type="index"><tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="true"/><!--<filter class="solr.WordDelimiterGraphFilterFactory"/>--></analyzer><analyzer type="query"><tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="true"/><!--<filter class="solr.WordDelimiterGraphFilterFactory"/>--></analyzer>
</fieldType>

重启solr,可查看分词器是否成功配置(如图表示索引中可以使用text_ik的类型了)。

2.4可以创建我们需要的索引了,目标创建3个索引:id,name,price

查看自己core下的managed-schema文件,id是默认提供的,我们只需要创建name,和price即可。

创建索引有三种方式:

第一种:控制台添加索引(推荐),不用重启即可生效

第二种:直接在managed-schema配置文件中添加如下配置,后重启solr生效

<!-- name:索引名称 type:索引类型 indexed:是否为索引 stored:索引值是否保存 -->
<field name="price" type="pfloat" indexed="true" stored="true" />

第三种:用Solr - API提供的接口操作索引字段

API官网可查看:http://lucene.apache.org/solr/guide/6_6/schema-api.html

3.添加索引值

索引字段创建完,就可以添加索引值了,添加索引值用多种方法,介绍2种简单方法。

3.1第一种,控制台直接添加数据。

查看数据,表示添加索引值成功,这种添加索引方法,就是测试用,没有实际意义。

3.2第二种:数据库导入数据(主流添加)

数据库导入数据,是通过查询数据库数据,直接添加到索引。

3.2.1添加数据库导入数据所需的三个jar文件,在solr-8.0.0下的dist目录下取出solr-dataimporthandler-8.0.0.jar,solr-dataimporthandler-extras-8.0.0.jar两个jar文件。

和上面“资源包“里的mysql-connector-java-5.1.7-bin.jar文件一起放入自己core下的lib目录中,没有lib文件夹自己创建,如图。

3.2.2创建数据库对应索引字段的配置文件 “资源包”中的data-config.xml。

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig><!-- 数据库信息 --><dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/shop?useUnicode=true&amp;characterEncoding=utf-8" user="root" password="123456"/><document><!-- document实体 --><entity name="item" query="SELECT * from product"><!-- 数据库字段映射solr字段,数据库中有id,name,price字段 --><field column="id" name="id" /> <field column="name" name="name" /><field column="price" name="price" /></entity></document>
</dataConfig>

3.2.3 数据库导入索引的配置文件data-config.xml,为了让Core识别,将如下配置添加到solrconfig.xml文件中,并将data-config.xml放在和solrconfig.xml同级目录下。

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"><lst name="defaults"><str name="config">data-config.xml</str></lst>
</requestHandler>

添加效果

3.2.4重启solr让文件生效,访问Dataimport.

如果出现上面的样式,恭喜你,可以导入数据了,full-import:是导入所有数据,data-import:是导入索引中没有的数据

点击执行。

再次查询结果:恭喜你~~

至此solr的添加索引完成,对于Solr查询和solrJ的使用和集群的搭建,内容也不少,篇幅有限,大家可以自行完成,只要知道solr工作原理,理解solr就方便了。

(完)


http://chatgpt.dhexx.cn/article/MvMBHXOT.shtml

相关文章

solr基础理解和功能分析

一、solr概述 Solr是一个开源搜索平台&#xff0c;用于构建搜索应用程序。 它建立在Lucene(全文搜索引擎)之上。Solr是一个可扩展的&#xff0c;可部署&#xff0c;搜索/存储引擎&#xff0c;优化搜索大量以文本为中心的数据。 二、solr管理界面功能 1.Logging 展示Solr的日…

Solr基本概念

Solr是一种开放源码的、基于Lucene的搜索服务器。它易于安装和配置&#xff0c;而且附带了一个基于HTTP 的管理界面。 官网&#xff1a; http://lucene.apache.org/solr/ Solr全文检索基本原理&#xff1a; http://www.importnew.com/12707.html 相关概念&#xff1a; Core: …

Solr 原理、API 使用

日萌社 人工智能AI&#xff1a;Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战&#xff08;不定时更新&#xff09; 搜索引擎&#xff1a;Elasticsearch、Solr、Lucene ELK中的ES&#xff1a;ElasticsearchSolrCloud 的搭建、使用Solr 高亮显示Spring Data Solr …

Solr的工作原理

1. Solr的简介 ​ Solr是一个独立的企业级搜索应用服务器&#xff0c;它对外提供类似于Web-service的API接口。用户可以通过http请求&#xff0c;向搜索引擎服务器提交一定格式的XML文件&#xff0c;生成索引&#xff1b;也可以通过Http Get操作提出查找请求&#xff0c;并得到…

Solr搜索引擎原理

本文转载至&#xff1a;http://www.importnew.com/12707.html 场景&#xff1a;小时候我们都使用过新华字典&#xff0c;妈妈叫你翻开第38页&#xff0c;找到“坑爹”所在的位置&#xff0c;此时你会怎么查呢&#xff1f;毫无疑问&#xff0c;你的眼睛会从38页的第一个字开始从…

【Solr启动原理】

Solr集群启动&#xff0c;都做了哪些事情&#xff1f;做了很多事&#xff0c;over。 启动流程大致如下&#xff1a; 1. 启动入口&#xff1a;web.xml。Solr归根结底是个Web服务&#xff0c;必须部署到jetty或者tomcat容器上。 2. SolrRequestFilter过滤器的实现类是org.apache…

Solr的工作原理以及如何管理索引库

1. Solr的简介 ​ Solr是一个独立的企业级搜索应用服务器&#xff0c;它对外提供类似于Web-service的API接口。用户可以通过http请求&#xff0c;向搜索引擎服务器提交一定格式的XML文件&#xff0c;生成索引&#xff1b;也可以通过Http Get操作提出查找请求&#xff0c;并得到…

solr底层原理

一、总论 根据http://lucene.apache.org/java/docs/index.html定义&#xff1a; Lucene是一个高效的&#xff0c;基于Java的全文检索库。 所以在了解Lucene之前要费一番工夫了解一下全文检索。 那么什么叫做全文检索呢&#xff1f;这要从我们生活中的数据说起。 我们生活中…

全文搜索引擎Solr原理和实战教程

Solr简介 1.Solr是什么? Solr它是一种开放源码的、基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中。Solr 提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式)。Solr是一个高性能,采用Java开发, 基于Lucene的全文搜索服务…

solr全文检索实现原理

solr那是我1年前使用到的一个搜索引擎&#xff0c;由于当初对于配置了相应了&#xff0c;但是今天突然面试问到了&#xff0c;哎&#xff0c;太久了&#xff0c;真的忘记了&#xff0c;今天特地写一篇博客记下来 solr是一个独立的企业级搜索应用服务器&#xff0c;它对外t提供…

Solr工作原理

Solr简介 Solr是一个独立的企业级搜索应用服务器&#xff0c;它对外提供类似于Web-service的API接口。用户可以通过http请求&#xff0c;向搜索引擎服务器提交一定格式的XML文件&#xff0c;生成索引&#xff1b;也可以通过Http Get操作提出查找请求&#xff0c;并得到XML格式…

Solr的原理及使用

1.Solr的简介 Solr是一个独立的企业级搜索应用服务器&#xff0c;它对外提供类似于Web-service的API接口。用户可以通过http请求&#xff0c;向搜索引擎服务器提交一定格式的XML文件&#xff0c;生成索引&#xff1b;也可以通过Http Get操作提出查找请求&#xff0c;并得到XML格…

Solr原理剖析

一、简介 Solr是一个高性能、基于Lucene的全文检索服务器。Solr对Lucene进行了扩展&#xff0c;提供了比Lucene更为丰富的查询语言&#xff0c;并实现了强大的全文检索功能、高亮显示、动态集群&#xff0c;具有高度的可扩展性。同时从Solr 4.0版本开始&#xff0c;支持SolrCl…

solr的基本原理

solr介绍&#xff1a; solr是一个全局检索引擎&#xff0c;能够快速地从大量的文本数据中选出你所需要的数据&#xff0c;而你只需要提供相应的关键词进行检索。solr的高效率查询靠的是底层强大的索引库&#xff0c;所以solr最关键的技术也是其底层的索引设计。solr工作的时候可…

Solr的工作原理(最直白的解释,简单易懂)懂?

Solr 什么是Solr Solr是一个开源搜索平台&#xff0c;用于构建搜索应用程序。 它建立在Lucene(全文搜索引擎)之上。 Solr是企业级的&#xff0c;快速的和高度可扩展的。 使用Solr构建的应用程序非常复杂&#xff0c;可提供高性能。 为了在CNET网络的公司网站上添加搜索功能&…

Solr(一) Solr 简介及搜索原理

一、 Solr 简介 1 为什么使用 Solr 在海量数据下&#xff0c;对 MySQL 或 Oracle 进行模糊查询或条件查询的效率是很低的。而搜索功能在绝大多数项目中都是必须的&#xff0c;如何提升搜索效率是很多互联网项目必须要考虑的问题。 既然使用关系型数据库进行搜索效率比较低&a…

UML入门以及Plant UML工具介绍

简介 UML&#xff0c;Unified Modeling Language&#xff0c;可视化的统一建模语言&#xff0c;是一种开放的方法&#xff0c;用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。而非程序设计语言&#xff0c;支持从需求分析开始的软件…

UML工具 Astah Professional8.0下载

UML工具 Astah Professional8.0下载 开头功能特性使用方法 文件下载链接 开头 由于Astah目前社区版被取消了&#xff0c;在这提供Professional 8.0版本。 Astah官网&#xff1a;https://astah.net/ 功能特性 1、在一个工具中做所有事情 不要为每个工作阶段切换工具。 做UML设…

免费 UML 工具

选取了四款UML工具: astah 经常看到网上的黄色背景就是这个软件画的,最后一个免费的社区版本是:astah community 7.2 安装包大小50M 以下三个均为免费版本: Software Ideas Modeler 可以画序列图,安装包很小,只有十几兆,而且提供便携版下载 Modelio 这是一个大型的…

十二个开源UML工具

本文将为您介绍12个优秀的UML工具&#xff1a; 1. StarUML StarUML(简称SU)&#xff0c;是一种创建UML类图&#xff0c;是一种生成类图和其他类型的统一建模语言(UML)图表的工具。StarUML是一个开源项目之一发展快、灵活、可扩展性强(zj)。 2. Netbeans UML Plugin 目前支持&…