Apache Solr入门教程(初学者之旅)

2023-11-02

Apache Solr入门教程(初学者之旅) 

写在前面:本文涉及solr入门的各方面,请逐行阅读,相信能帮助你对solr有个清晰全面的了解并能简单实用。

在Apache Solr初学者教程的这个例子中,我们将讨论有关如何安装最新版本的Apache Solr,并告诉你如何配置它。此外,我们将告诉你如何进行使用solr的样本数据文件索引。Apache Solr支持不同格式,包括各种数据库,PDF文件,XML文件,CSV文件等等。在这个例子中,我们将研究如何从一个CSV文件索引数据。

首选这个例子的环境是Windows。开始Solr安装之前,确保你已经安装了JDK和正确配置JAVA_HOME。

1.为什么选择Apache Solr

Apache Solr是一个功能强大的搜索服务器,它支持REST风格API。Solr是基于Lucene的,Lucene 支持强大的匹配能力,如短语,通配符,连接,分组和更多不同的数据类型。它使用 Apache Zookeeper特别针对高流量进行优化。Apache Solr提供各式各样的功能,我们列出了部分最主要的功能。

  1. 先进的全文搜索功能。
  2. XML,JSON和HTTP - 基于开放接口标准。
  3. 高度可扩展和容错。
  4. 同时支持模式和无模式配置。
  5. 分页搜索和过滤。
  6. 支持像英语,德语,中国,日本,法国和许多主要语言
  7. 丰富的文档分析。

2.安装Apache Solr

要首先让从以下位置下载最新版本的Apache Solr:

http://lucene.apache.org/solr/downloads.html

在撰写本文时,可用的稳定版本是5.0.0。Apache Solr经历了从4.XX到5.0.0各种变化了,所以如果你有不同版本的Solr,你需要下载5.xx版本并以此为模板。

一旦Solr的zip文件下载将它解压缩到一个文件夹。提取的文件夹看起来像下面。

Solr的文件夹

bin文件夹中包含用来启动和停止服务器的脚本。example 文件夹包含几个示例文件。我们将使用其中的一种,以说明Solr如何索引数据。server 文件夹包含logs 文件夹,所有的Solr的日志都写入该文件夹。这将有助于索引过程来检查任何错误日志。在sever文件夹下的Solr文件夹包含不同的集合或核心(core/collection)。对于各集合或核心的配置和数据都存储在相应的集合或核心文件夹。

Apache Solr带有一个内置的Jetty服务器。但在我们开始之前,我们必须验证JAVA_HOME已经配置。

我们可以使用命令行脚本启动服务器。让我们去solr的bin目录,从命令提示符输入出以下命令

solr start

这将启动下的默认端口8983 Solr的服务器。

现在,我们可以在浏览器中打开以下网址和验证,我们的Solr的实例正在运行。solr的管理工具的细节超出了示例的范围。

http://localhost:8983/solr/

Solr管理控制台

3.配置Apache Solr

在本节中,我们将告诉你如何配置的核心/集合作为Solr实例,以及如何定义的字段。Apache Solr附带称为无模式模式的选项。这个选项允许用户构建有效的架构,而无需手动编辑模式文件。但是,在这个例子中,我们将使用架构配置理解Solr的内部。

3.1建立核心(core)

当Solr的服务器在独立模式下启动的配置称为核心,当它在SolrCloud模式启动的配置称为集合。在这个例子中,我们将有关独立服务器和核心讨论。我们将在以后再讨论SolrCloud。首先,我们需要创建一个核心的索引数据。Solr的创建命令有以下选项:

  1. -c <name> -要创建的核心或集合的名称(必需)。
  2. -d <confdir> -配置目录,在SolrCloud模式非常有用。
  3. -n <configName> -配置名称。这将默认为核心或集合的名称。
  4. -p <port> -本地Solr的实例的端口发送create命令; 默认脚本试图通过寻找运行Solr的实例来检测端口。
  5. -s <shards> -Number of shards to split a collection into, default is 1.
  6. -rf <replicas> -集合中的每个文件的份数。默认值是1。

在这个例子中,我们将使用的核心名称和配置目录-d参数-c参数。对于所有其它参数我们使用默认设置。

现在在命令窗口浏览 solr-5.0.0\bin文件夹,并发出以下命令。

solr create -c jcg -d basic_configs

我们可以看到在命令窗口中下面的输出。

Creating new core 'jcg' using command:

http://localhost:8983/solr/admin/cores?action=CREATE&name=jcg&instanceDir=jcg

 {

 "responseHeader":{

 "status":0,

 "QTime":663},

 "core":"jcg"}

现在我们导航到以下网址,我们可以看到JCG核心被填充在核心选择器上。还可以看到核心的统计信息。

http://localhost:8983/Solr

Solr的核心JCG

3.2修改Schema.xml文件

我们需要修改schema.xml中文件的文件夹下,server\solr\jcg\conf包含的字段。我们将使用随Solr的安装索引附带的示例文件“books.csv”之一。该文件所在的文件夹下  的solr-5.0.0\example\exampledocs

现在,我们定位到该文件夹  server\solr目录。你会看到一个名为JCG的文件夹被创建。子文件夹conf和data分别拥有核心的配置和索引的数据。

现在编辑\server\solr\jcg\conf\server\solr\jcg\conf\schema.xml文件,设置唯一元素后添加以下内容。

schema.xml

<uniqueKey>id</uniqueKey>

<!-- Fields added for books.csv load-->

<field name="cat" type="text_general" indexed="true" stored="true"/>

<field name="name" type="text_general" indexed="true" stored="true"/>

<field name="price" type="tdouble" indexed="true" stored="true"/>

<field name="inStock" type="boolean" indexed="true" stored="true"/>

<field name="author" type="text_general" indexed="true" stored="true"/>

  

我们已经设置了属性索引为true。这指定字段用于索引和记录可以使用索引进行检索。该值设置为false将只存储领域,但不能进行查询。

另外请注意另一个属性stored并将其设置为true。这指定字段被存储,并且可以在输出被返回。将此字段设置为假将使字段唯一索引,并且不能在输出进行检索。

我们已经分配给存在于此处的“books.csv”文件中的字段的类型。在CSV文件“ID”第一场由索引Schema.xml文件的唯一键自动元素的照顾。如果你注意,我们已经略过字段series_t,sequence_i和genre_s未做任何条目。但是,当我们执行索引时,所有这些字段都被索引且没有任何问题。如果你想知道这种情况需要在Schema.xml文件的dynamicField部分一探究竟。

schema.xml

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

<dynamicField name="*_is" type="ints" indexed="true" stored="true"/>

<dynamicField name="*_s" type="string" indexed="true" stored="true" />

<dynamicField name="*_ss" type="strings" indexed="true" stored="true"/>

<dynamicField name="*_l" type="long" indexed="true" stored="true"/>

<dynamicField name="*_ls" type="longs" indexed="true" stored="true"/>

<dynamicField name="*_t" type="text_general" indexed="true" stored="true"/>

<dynamicField name="*_txt" type="text_general" indexed="true" stored="true"/>

<dynamicField name="*_b" type="boolean" indexed="true" stored="true"/>

<dynamicField name="*_bs" type="booleans" indexed="true" stored="true"/>

<dynamicField name="*_f" type="float" indexed="true" stored="true"/>

<dynamicField name="*_fs" type="floats" indexed="true" stored="true"/>

<dynamicField name="*_d" type="double" indexed="true" stored="true"/>

<dynamicField name="*_ds" type="doubles" indexed="true" stored="true"/>

既然我们已经修改了配置,我们必须停止和启动服务器。要做到这一点,我们需要通过命令行发出从bin目录下面的命令。

Solr  stop -all

服务器将停止现在。现在启动服务器问题从bin目录中通过命令行运行以下命令。

Solr start

4.索引数据

Apache Solr带有一个叫做SimplePostTool独立的Java程序。这个程序被打包成JAR,在安装目录下 example\exampledocs可看到。

现在,我们在命令行定位到example\exampledocs文件夹,然后键入以下命令。你会看到一堆选项,使用的工具。

Java -jar post.jar -h

在一般的使用格式如下用途:

Usage: java [SystemProperties] -jar post.jar [-h|-] [<file|folder|url|arg>

[<file|folder|url|arg>...]]

正如我们前面所说,我们将索引“books.csv”文件中的数据。我们将导航到solr-5.0.0\example\exampledocs在命令提示符并发出以下命令。

java -Dtype=text/csv -Durl=http://localhost:8983/solr/jcg/update  -jar post.jar   books.csv

这里使用的SystemProperties是:

  1. -dtype - 数据文件的类型。
  2. -Durl - JCG核心的地址。

文件“books.csv”现在将索引和命令提示符将显示以下输出。

SimplePostTool version 5.0.0

Posting files to [base] url http://localhost:8983/solr/jcg/update using content-

type text/csv...

POSTing file books.csv to [base]

1 files indexed.

COMMITting Solr index changes to http://localhost:8983/solr/jcg/update...

Time spent: 0:00:00.647

现在我们导航到以下网址并选择核心JCG。

http://localhost:8983/solr

Solr的JCG核心数据

就拿在统计部分仔细一看,该民文档参数将显示索引的行数。

5.访问索引的文档

Apache Solr提供了一种基于REST API来访问的数据,并还提供了不同的参数,以检索数据。我们将向您展示一些基于场景的查询。

5.1按名称搜索

我们将用它的名字检索书的细节。要做到这一点,我们将使用下面的语法。URL中的参数“Q”是查询事件。

打开浏览器下列URL。

http://localhost:8983/solr/jcg/select?q=name:"A Clash of Kings"

输出将在下面,如图所示。

按名称SOLR

5.2首字母搜索

现在我们将告诉你如何搜索记录,如果我们只知道起始字母或单词,不记得完整的标题。我们可以用下面的查询检索结果。

http://localhost:8983/solr/jcg/select?q=name:"A"

输出将列出所有的书籍字母A盯着

Solr的首字母

5.3搜索使用通配符

Solr的支持通配符搜索。我们将下面的展示如何检索所有书名包含“of”的书。

http://localhost:8983/solr/jcg/select?q=name:"*of"

Solr的通配符搜索

5.4搜索使用的条件

Solr的支持条件的搜索。我们可以设置条件,我们的查询提供了“FQ”参数。在下面我们将告诉你如何查询价格低于¥6的书。

http://localhost:8983/solr/jcg/select?q=*&fq=price:[0 TO 6]

输出将只列出这是低于$ 6的书籍。

Solr搜索条件

6. Solr的客户端API的

有不同的客户端API的可用来连接到Solr的服务器。我们列出了一些广泛使用的Solr客户端API的。

  1. SolRuby – To connect from Ruby
  2. SolPHP – To connect from PHP
  3. PySolr – To connect from Python
  4. SolPerl – To connect from Perl
  5. SolrJ – To connect from Java
  6. SolrSharp – To connect from C#

此外,Solr还提供了JavaScript可以直接使用的基于REST的API。

ps:由于篇幅过长,部分段落使用翻译软件翻译,请谅解,但均已手动修改,不影响内容学习,有时间的同学也可阅读英文版。

参考地址:Apache Solr Tutorial for Beginners - Examples Java Code Geeks - 2023 

转载注明出处:https://blog.csdn.net/u011936655/article/details/51960005 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache Solr入门教程(初学者之旅) 的相关文章

  • SLES Apache Solr start.jar,无法访问 jarfile

    我在启动 Apache Solr 搜索时遇到一些问题 在我的 SLES 11 64 位服务器上安装 java 7 后 我将 solr 3 6 1 解压到 srv apache solr 3 6 0 之后我想启动该软件 但是当我尝试时 jav
  • 如何在不使用 SPLITSHARD 的情况下动态向 SolrCloud 添加节点?

    我已经设置了Solr云有 4 个碎片 我向 SolrCloud 添加了 8 个节点 4 个领导者和 4 个副本 每个节点运行在不同的机器上 但后来我发现我的数据越来越多 每天400万文件 这样我的 4 个分片就不够用了 因此 我想动态地向该
  • DataImportHandler 未在 solr admin 中索引 mysql 表

    我正在尝试使用 DataImportHandler 在 solr 中索引 mysql 表 但它似乎没有索引 数据配置 xml
  • 在solr中获取pdf搜索结果的页码

    我正在构建一个 Web 应用程序 用户可以在其中搜索 pdf 文档并使用 pdf js 查看它们 我想显示搜索结果 其中包含找到搜索词的段落的简短片段以及用于在右侧页面打开文档的链接 所以我需要的是每个搜索结果的页码和简短的文本片段 我正在
  • Solr 中缺少强制 uniquekey 字段错误

    我的项目中有这个问题 我使用 Apache Poi 读取 xlsx excel 文件 并且想在 Solr 核心中对它们进行索引 我使用 SolrInputDocument 来索引读取文件 这是我的java代码 package org sol
  • Solr 动态价格范围和组

    跟进问题 如何获取 solr 结果中的方面范围 https stackoverflow com questions 33956 how to get facet ranges in solr results SolR 查询 价格范围 htt
  • 在 solr 8 中的 fl 中使用父过滤器时获取“当架构嵌套时不应发送父过滤器”

    我正在尝试使用子文档获取父文档 但得到 当模式嵌套时不应发送父过滤器 error 附上下面我尝试过但无法得到解决方案的查询 q parent which content type person fl child parentFilter c
  • 如何将 Solarium 配置为使用 POST 而不是 GET 请求

    我面临的问题是我们发送到 solr jetty 的 uri 变得很长 超过 9k 字节 超出了 jetty 的默认限制 解决方案是从 GET 请求切换到 POST 请求 因为我们不想增加 jetty 可以接受的 requestHeaderS
  • 在 Solr 中实现术语关联挖掘的最简单方法是什么?

    关联挖矿似乎为检索提供了良好的结果相关术语在文本语料库中 有很多关于这个主题的著作 其中包括著名的LSA http en wikipedia org wiki Latent semantic analysis方法 挖掘关联最直接的方法是构建
  • 如何备份Solr数据库?

    我想知道如何备份 转储 Solr 数据库 如果只是复制一些文件 请指定哪些文件 文件名 位置等 Thanks We use Solr复制 http wiki apache org solr SolrReplication做我们的备份 您可以
  • NoSQL(MongoDB)与 Lucene(或 Solr)作为数据库[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 随着基于文档数据库的 NoSQL 运动的发展 我最近关注了 MongoDB 我注意到如何将项目视为 文档 就像 Lucene 以及 Solr 用
  • simplexml_load_file 在 Solr 的 url 中带有 &(与号)

    我正在使用 Solr 并有以下查询 该查询在我的浏览器中运行良好 http www someipaddress com 8983 solr select q fq shopid 40 start 0 rows 18 fq manufactu
  • Solr 中的拼写检查中阈值频率不起作用

    我得到stuck在中间Solr 我只需要最流行的词 w r t query 我用过语音过滤器双方索引和查询但这里的problem是它正在给予术语太多 我只需要几个术语这是非常具体的query 模式 xml
  • Solr 增量导入不起作用

    我使用的是solr 4 2 请注意 完全导入有效 但增量导入却无效 增量导入不会给出任何错误 但不会获取任何更改 这是数据配置文件
  • 加速 SOLR 搜索

    使用 SOLR Apache Lucene 3 6 时 SOLR 搜索响应非常慢 我正在尝试的一些性能增强技术是 SOLR 分页 mergeFactor 当前在 solrConfig xml 中设置为 10 SOLR 方面查询 solrco
  • 有没有推荐的与 Lucene 或 Solr 一起使用的爬虫工具? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何知道 Solr Optimize 何时完成?

    我正在使用 Solr php client 通过 php 与 Solr 进行通信 这段代码触发solr优化命令 solr gt optimize 请问有没有什么方法可以确定优化完成了 这都是因为我的网站上有一个管理页面 我每天必须手动优化
  • 使用进度条时出错:Max 必须是正整数

    每当我用 solr 重新索引 a 时 都会收到以下错误 RAILS ENV development rake sunspot solr reindex Error using progress bar Max must be a posit
  • Solr 阿拉伯语

    我正在使用 Solr 来索引 3 种语言 阿拉伯语 法语和英语 的文档 我使用了这个 fieldType
  • solr 不标记受保护的单词

    我在 Solr Lucene 3 x 中有一个文档 其中有一个特殊的复制字段facet headline 以便有一个用于分面的未词干字段 有时两个或以上的单词属于在一起 这应该被处理 算作一个单词 例如 kim jong il 因此标题 星

随机推荐

  • 整理各种Vue项目在IE浏览器白屏报错 SCRIPT1002:语法错误

    目录 一 关于 sockjs client 依赖包 二 关于 highlight 依赖包 三 关于 swiper 依赖包 四 IE 不支持 ES6 语法 五 第三方插件引入导致 六 本地环境正常 生产环境仍旧白屏 这篇文章主要介绍了 Vue
  • 开启和关闭数据执行保护执行命令

    关闭数据执行保护 bcdedit exe set current nx AlwaysOff 开始 gt 运行 cmd 确定 输入命令 bcdedit set nx alwaysoff 关闭数据执行保护 bcdedit set nx opti
  • Linux与windows安装VMware虚拟机超详细

    Vmware虚拟机安装与使用 Linux系统安装与基本配置 远程登录管理工具的使用 Windows server 2008安装与配置 Vmware虚拟机安装与使用 1 1 VMware简介 VMware是一个虚拟PC的软件 可以在现有的操作
  • 【享你所想】Nodejs+koa+vue 博客系统开发教程+源码

    项目初始化 1 首先 安装git 初始化项目 git init 项目搭建 2 安装koa 命令 npm install koa 3 安装重启服务工具 命令 npm install nodemon 编写脚本 scripts dev nodem
  • 安装phpssdb 'ext/standard/php_smart_str.h' file not found 问题拓展总结

    1 首先看看问题描述 Users augdai src phpssdb ssdb library c 21 10 fatal error ext standard php smart str h file not found include
  • MySql截取字符串的几个常用函数详解

    MySql截取字符串的几个常用函数详解 MySQL 截取字符的几个常用函数 left right substring substring index mid substr 其中mid substr substring 这三个函数都是指定下标
  • CNN中感受野的计算

    感受野 receptive field 是怎样一个东西呢 从CNN可视化的角度来讲 就是输出featuremap某个节点的响应对应的输入图像的区域就是感受野 比如我们第一层是一个3 3的卷积核 那么我们经过这个卷积核得到的featurema
  • iqoo支持typec耳机吗_试试用120分旗舰玩王者荣耀?iQOO × KPL 2020联名礼盒图赏

    点击右上角关注我们 每天给您带来最新最潮的科技资讯 让您足不出户也知道科技圈大事 虽说成立到现在也才不到两年 但 iQOO 在手游圈已经小有名气 不少玩家都被它的硬核配置打动 最近 iQOO 与王者荣耀职业联赛合作推出的 iQOO KPL
  • nacos远程服务器部署,总是显示localhost:8848而不是远程ip

    背景 学习nacos时 首先在本地windows环境上部署了一个nacos服务器 成功从本地nacos上取得配置信息并且实现服务注册 后面想把nacos部署到远程linux上 照道理只需要修改bootstrap yml文件中的serverA
  • 简单的LSTM生成钢琴纯音乐

    每天逛一趟GitHub 向大神们学习 1 拿出所有的音符 import glob import pickle from music21 import converter instrument note chord stream from t
  • Web开发-Vue3.x

    Web开发 Vue3 x 回炉再造 2021 Vue3 0 前端全家桶学习笔记 Vue全家桶 Vue3 x 认识Vue3 Vue开发初体验 Vue CLI脚手架 VUE 基础语法 网络封装 组件化开发 VUE 路由应用 Vuex详解 Vue
  • Myeclipse启动tomcat的debug模式,总是跳到Class.class里面的解决办法

    方法一 在工作界面 点window菜单栏 选中Preperences 在General选项卡中的key节点下 找到快捷键输入栏 在type filter text中输入remove 下面自能提示中就会出现Remove all breakpo
  • 物联网ARM开发-4协议-单总线应用温湿度传感器

    前言 STM32 虽然内部自带了温度传感器 但是因为芯片温升较大等问题 与实际温度差别较大 所以 本章我们将向大家介绍如何通过 STM32 来读取外部数字温度传感器的温度 来得到较 为准确的环境温度 在本章中 我们将学习使用单总线技术 通过
  • vue项目国际化(多语言)

    记录一下笔记 以下vue项目案例使用vue cli搭建 一 安装依赖 1 使用npm命令安装所需依赖vue i18n 此demo安装的版本为vue i18n 8 24 2 安装命令 npm i vue i18n 8 24 2 2 安装完成之
  • SQL删除表语句

    1 普通删除表语句 必须同时满足如下两个条件 该表必须存在 若不存在则报错 要删除的表不能存在与其他表的约束 否则SQL会报错 DROP TABLE 要删除的表名 2 判断式删除表语句 必须满足如下条件 被删除的表不一定存在 若不存在则不删
  • CentOS8安装Docker

    文章目录 1 背景简介 2 错误提示 3 问题分析 4 解决方法 1 背景简介 最近用上了VULTR机器 默认使用了CentOS8 正好尝尝鲜 尝试安装Docker时出现了错误 故及时记录一下 方面其他同学 2 错误提示 Problem p
  • 智能化漏洞挖掘技术总结

    全文基于 从自动化到智能化 软件漏洞挖掘技术进展 进行提炼 总结 修改 1 静态漏洞挖掘技术 1 1面向源代码 面向源代码的漏洞挖掘主要采用基于中间表示的分析和基于逻辑推理的分析技术 基于中间表示的分析技术主要包括数据流分析 控制流分析 污
  • SD卡的操作模式及切换

    目录 SD卡的操作模式及切换 SD卡的操作模式 卡识别模式 数据传输模式 SD卡的操作模式及切换 SD卡的操作模式 SD卡有多个版本 STM32控制器目前最高支持 Physical Layer Simplified Specificatio
  • k8s安装禁用swap分区k

  • Apache Solr入门教程(初学者之旅)

    Apache Solr入门教程 初学者之旅 写在前面 本文涉及solr入门的各方面 请逐行阅读 相信能帮助你对solr有个清晰全面的了解并能简单实用 在Apache Solr初学者教程的这个例子中 我们将讨论有关如何安装最新版本的Apach