Apache Solr入门教程(初学者之旅)
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提供各式各样的功能,我们列出了部分最主要的功能。
- 先进的全文搜索功能。
- XML,JSON和HTTP - 基于开放接口标准。
- 高度可扩展和容错。
- 同时支持模式和无模式配置。
- 分页搜索和过滤。
- 支持像英语,德语,中国,日本,法国和许多主要语言
- 丰富的文档分析。
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的管理工具的细节超出了示例的范围。
Solr管理控制台
3.配置Apache Solr
在本节中,我们将告诉你如何配置的核心/集合作为Solr实例,以及如何定义的字段。Apache Solr附带称为无模式模式的选项。这个选项允许用户构建有效的架构,而无需手动编辑模式文件。但是,在这个例子中,我们将使用架构配置理解Solr的内部。
3.1建立核心(core)
当Solr的服务器在独立模式下启动的配置称为核心,当它在SolrCloud模式启动的配置称为集合。在这个例子中,我们将有关独立服务器和核心讨论。我们将在以后再讨论SolrCloud。首先,我们需要创建一个核心的索引数据。Solr的创建命令有以下选项:
- -c <name> -要创建的核心或集合的名称(必需)。
- -d <confdir> -配置目录,在SolrCloud模式非常有用。
- -n <configName> -配置名称。这将默认为核心或集合的名称。
- -p <port> -本地Solr的实例的端口发送create命令; 默认脚本试图通过寻找运行Solr的实例来检测端口。
- -s <shards> -Number of shards to split a collection into, default is 1.
- -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是:
- -dtype - 数据文件的类型。
- -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的。
- SolRuby – To connect from Ruby
- SolPHP – To connect from PHP
- PySolr – To connect from Python
- SolPerl – To connect from Perl
- SolrJ – To connect from Java
- SolrSharp – To connect from C#
此外,Solr还提供了JavaScript可以直接使用的基于REST的API。
ps:
转载请注明出处:https://www.cnblogs.com/cblogs/p/solr-tutorial.html
译文地址:https://examples.javacodegeeks.com/enterprise-java/apache-solr/apache-solr-tutorial-beginners/
Apache Solr入门教程(初学者之旅)的更多相关文章
- Apache Solr入门教程(转)
1.为什么选择Apache Solr Apache Solr是一个功能强大的搜索服务器,它支持REST风格API.Solr是基于Lucene的,Lucene 支持强大的匹配能力,如短语,通配符,连接, ...
- Apache Solr 初级教程(介绍、安装部署、Java接口、中文分词)
Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...
- solr的安装及配置详细教程/solr入门教程
1 solr的下载 从Solr官方网站(http://lucene.apache.org/solr/ )下载Solr最新版本,根据Solr的运行环境,Linux下需要下载solr-7.3.1.tgz, ...
- solr入门教程-较详细
Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境搭建及调试;两个核心配置文件介绍;维护索引;查询索引,和在 ...
- 一条数据的HBase之旅,简明HBase入门教程-开篇
常见的HBase新手问题: 什么样的数据适合用HBase来存储? 既然HBase也是一个数据库,能否用它将现有系统中昂贵的Oracle替换掉? 存放于HBase中的数据记录,为何不直接存放于HDFS之 ...
- 推荐10个适合初学者的 HTML5 入门教程
HTML5 作为下一代网站开发技术,无论你是一个 Web 开发人员或者想探索新的平台的游戏开发者,都值得去研究.借助尖端功能,技术和 API,HTML5 允许你创建响应性.创新性.互动性以及令人惊叹的 ...
- Solr7.3.0入门教程,部署Solr到Tomcat,配置Solr中文分词器
solr 基本介绍 Apache Solr (读音: SOLer) 是一个开源的搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现.Apache ...
- 一条数据的HBase之旅,简明HBase入门教程-Write全流程
如果将上篇内容理解为一个冗长的"铺垫",那么,从本文开始,剧情才开始正式展开.本文基于提供的样例数据,介绍了写数据的接口,RowKey定义,数据在客户端的组装,数据路由,打包分发, ...
- 《Visual C++ 2010入门教程》系列四:VC2010中初学者常见错误、警告和问题
<Visual C++ 2010入门教程>系列四:VC2010中初学者常见错误.警告和问题 这一章将帮助大家解释一些常见的错误.警告和问题,帮助大家去理解和解决一些常见问题,并了解它的 ...
随机推荐
- Git Bash上传文件
今天通过Git Bash上传了一个项目(之前是通过Github Desk上传的),操作命令如下: 在目录下shift+右键打开Git Bash 1.git init 2.git add *.py 3. ...
- 编写函数求整形数组a中存储的m个不重复的整数的第k大的整数(其中m>=1,1<=k<=m)很简单的一个思路是酱紫的:管他辣么多干啥,上来一把排序然后直接得答案
/** * @author:(LiberHome) * @date:Created in 2019/2/28 20:38 * @description: * @version:$ *//*编写函数求整 ...
- .NET Core 2.1 源码学习:看 SocketsHttpHandler 如何在异步方法中连接 Socket
在 .NET Core 2.1 中,System.Net.Sockets 的性能有了很大的提升,最好的证明是 Kestrel 与 HttpClient 都改为使用 System.Net.Sockets ...
- [No0000198]swagger api一键导入postman
在用postman进行接口测试时,对于参数较多的接口时第一次添加接口参数是比较繁琐的,可利用swagger一键导入api接口,事例如下: 1.获取swagger地址 2.打开postman,点击imp ...
- 作业2:git使用
作业要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2097 远端库地址:https://github.com/yellow ...
- python 缺少module
ImportError: No module named lxml ImportError: No module named PyQt4.QtCore sudo apt-get install pyt ...
- Kali2安装完成后的设置
1.安装中文输入法 vim /etc/apt/sources.list 全部删除,改为国内源 #中科大 deb http://mirrors.ustc.edu.cn/kali kali-rolling ...
- MACD技术的高级应用--MACD与波浪
在开始分析MACD指标之前,我想我们必须先从思想上认同以下两点,否则本文的研究就没有意义. 1)趋势在一段时间内是可以把握的: 2)每个指标都有有效的时候,没有指标会始终有效.我们就是要搞清楚指标 ...
- Java+Selenium环境搭建
初学者---简单的selenium环境搭建: 1. 安装JAVA环境 2.下载eclipse 3.下载firefox (不要最高版本,容易出现selenium不兼容问题) 4. 下载selenium需 ...
- mybatis plus XML文件如何使用多个where条件
网上搜到很多例子教你在mybatis plus使用XML文件来查询自定义的sql,但是给的例子都是给的只注解了一个where的例子.我最近在开发的一个项目中,因为涉及到了多表的复杂查询,需要在一个sq ...