本文英文版地址:https://examples.javacodegeeks.com/enterprise-java/apache-solr/solr-query-syntax-examples/
在这个Solr查询语法示例中,我们将讨论Solr中不同的查询格式。 对于我们的讨论,我们将使用Solr安装附带的一个集合示例( 技术产品 )。 我们将向您展示如何使用Solr公开的基于REST的API,并向您展示如何使用各种查询参数。我们首选的环境是Windows。在开始Solr安装之前,请确保已安装JDK并已正确设置Java_Home。
首先,让我们从以下位置下载最新版本的Apache Solr:
http://lucene.apache.org/solr/downloads.html
截至本文,稳定版本可用是5.0.0。 Apache Solr已经经历了从4.xx到5.0.0的各种更改,因此如果您有不同版本的Solr,则需要下载5.xx版本以遵循此示例。
下载Solr zip文件后,将其解压缩到文件夹中。 提取的文件夹将如下所示。
bin
文件夹包含用于启动和停止服务器的脚本。 example
文件夹包含几个示例文件。 我们将使用其中一个来演示Solr如何对数据进行索引。server
文件夹包含用于写入所有Solr日志的logs
文件夹。在索引期间检查日志中的任何错误将有所帮助。 服务器下的solr
文件夹包含不同的集合或核心。 每个核/集合的配置和数据存储在相应的核/集合文件夹中。
Apache Solr附带了一个内置的Jetty服务器。 但在我们启动solr实例之前,我们必须验证JAVA_HOME是否在机器上设置。
Solr提供了一些有用的集合示例来了解主要功能。 我们将使用与Solr捆绑在一起的技术产品集合进行讨论。 要使用techproducts集合启动Solr服务器,请打开命令提示符,导航到bin文件夹并发出以下语法。
solr -e techproducts
这将在默认端口8983下启动Solr服务器。
我们现在可以在浏览器中打开以下URL,并验证我们的Solr实例正在运行。 您还可以注意到正在填充的收集技术产品。
http://localhost:8983/solr/
Solr提供了一个简单的基于REST的select查询来搜索索引数据。 我们必须提供集合的上下文路径(在我们的案例中是techproducts),并在URL中使用select,表示这是一个select查询。 参数q用于指定搜索字符串。
以下查询将在techproducts集合的所有索引字段中查找视频。 如果您注意到视频存在于结果1的名称字段中,并且出现在结果2的某个功能中。此类型的查询可用于在文档上进行自由文本搜索。 在浏览器中打开以下URL。
http://localhost:8983/solr/techproducts/select?q=video
Solr提供了可用于查询的参数列表。 以下部分说明可用的参数和目的。
我们可以使用Solr提供的一个或多个参数来构造查询。 在本节中,我们将向您展示几个组合。
如前所述,fl参数可用于在响应中选择有限的字段集。 这将有助于限制通过系统的数据量,并降低I / O成本。
我们将修改基本查询以返回有限的字段集。 我们选择在以下查询中返回ID,名称和价格。
在浏览器中打开以下URL。 您可以注意到,结果集只包含所选字段,当以字节为单位测量时,响应的大小减小。
http://localhost:8983/solr/techproducts/select?q=video&fl=id,name,price
我们可以修改基本查询来添加过滤器。 在基本查询中,我们没有指定任何字段来搜索字符串video,它从名称,特征等返回值。但现在我们将指定在哪里查找搜索字符串。
在浏览器中打开以下URL。 您可以注意到结果只包含名称字段中包含视频的记录。
http://localhost:8983/solr/techproducts/select?q=name:video
类似地,我们可以修改查询以选择具有类别的所有产品作为电子。 在浏览器中打开以下URL。 您可以注意到结果集只包含电子产品。 此外,我们已经合并了fl参数,只选择id,name和price字段。
http://localhost:8983/solr/techproducts/select?q=cat:electronics&fl=id,name,price
构面是用于将搜索结果排列成类别的特殊类型的搜索。 搜索与索引术语以及匹配文档的计数一起呈现。 Faceting使用户能够轻松地浏览搜索结果,缩小搜索结果的精确范围。
在浏览器中打开以下查询。 您将在响应的底部看到每个类别的facet_counts。此外,您可以注意到我们已应用过滤器的价格和只选择指定字段。
http://localhost:8983/solr/techproducts/select?q=price:[0 TO 400]&fl=id,name,price&facet=true&facet.field=cat