Apache Solr是一个功能强大的搜索服务器,它支持REST风格API。Solr是基于Lucene的,Lucene 支持强大的匹配能力,如短语,通配符,链接,分组和更多不一样的数据类型。它使用 Apache Zookeeper特别针对高流量进行优化。Apache Solr提供各式各样的功能,咱们列出了部分最主要的功能。html
要首先让从如下位置下载最新版本的Apache Solr:java
http://lucene.apache.org/solr/downloads.htmlapache
在撰写本文时,可用的稳定版本是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目录,从命令提示符输入出如下命令post
solr start
这将启动下的默认端口8983 Solr的服务器。优化
如今,咱们能够在浏览器中打开如下网址和验证,咱们的Solr的实例正在运行。solr的管理工具的细节超出了示例的范围。
Solr管理控制台
在本节中,咱们将告诉你如何配置的核心/集合做为Solr实例,以及如何定义的字段。Apache Solr附带称为无模式模式的选项。这个选项容许用户构建有效的架构,而无需手动编辑模式文件。可是,在这个例子中,咱们将使用架构配置理解Solr的内部。
当Solr的服务器在独立模式下启动的配置称为核心,当它在SolrCloud模式启动的配置称为集合。在这个例子中,咱们将有关独立服务器和核心讨论。咱们将在之后再讨论SolrCloud。首先,咱们须要建立一个核心的索引数据。Solr的建立命令有如下选项:
在这个例子中,咱们将使用的核心名称和配置目录-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
咱们须要修改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
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<
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
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是:
文件“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核心数据
就拿在统计部分仔细一看,该民文档参数将显示索引的行数。
Apache Solr提供了一种基于REST API来访问的数据,并还提供了不一样的参数,以检索数据。咱们将向您展现一些基于场景的查询。
咱们将用它的名字检索书的细节。要作到这一点,咱们将使用下面的语法。URL中的参数“Q”是查询事件。
打开浏览器下列URL。
http://localhost:8983/solr/jcg/select?q=name:"A Clash of Kings"
输出将在下面,如图所示。
按名称SOLR
如今咱们将告诉你如何搜索记录,若是咱们只知道起始字母或单词,不记得完整的标题。咱们能够用下面的查询检索结果。
http://localhost:8983/solr/jcg/select?q=name:"A"
输出将列出全部的书籍字母A盯着
Solr的首字母
Solr的支持通配符搜索。咱们将下面的展现如何检索全部书名包含“of”的书。
http://localhost:8983/solr/jcg/select?q=name:"*of"
Solr的通配符搜索
Solr的支持条件的搜索。咱们能够设置条件,咱们的查询提供了“FQ”参数。在下面咱们将告诉你如何查询价格低于¥6的书。
http://localhost:8983/solr/jcg/select?q=*&fq=price:[0 TO 6]
输出将只列出这是低于$ 6的书籍。
Solr搜索条件
有不一样的客户端API的可用来链接到Solr的服务器。咱们列出了一些普遍使用的Solr客户端API的。
此外,Solr还提供了JavaScript能够直接使用的基于REST的API。