在 Apache Solr 中查询数据

17 Mar 2025 | 4 分钟阅读

Apache Solr 除了存储数据之外,还提供了查询数据的设施。Solr 提供了某些参数,用户可以使用这些参数来查询其中存储的数据。

在下表中,我们列出了 Apache Solr 中可用的各种查询参数。

参数描述
q这是 Apache Solr 的主要查询参数。它们将文档与此参数中的术语进行相似度评分。
fq它表示 Solr 的过滤查询,它将结果集限制为与此过滤器匹配的文档。
开始 (start)它表示从此参数的默认值 0 开始的页面结果的初始偏移量。
rowsrows 参数表示需要检索每页的文件的数量。默认情况下,此参数的值为 10。
排序它指定一个由逗号分隔的字段列表,查询结果将基于这些字段进行排序。
fl它指定要返回结果集中所有文档的字段列表。
wt此参数表示我们希望查看结果的响应编写器类型。

我们可以将以上所有参数视为查询 Solr 文档的选项。转到 Apache Solr 的主页,在页面左侧,单击“查询”。我们将被重定向到查询参数的字段。

Querying Data in Apache Solr

检索记录

假设我们在名为my_core的内核中有三个不同的记录。要从选定的内核获取详细数据,我们必须传递字段的名称-值对到指定的文档。例如,如果我们要获取具有字段 id 值的记录,我们必须将字段的名称和值对作为 - Id:001 作为q参数的值并运行查询命令。

Querying Data in Apache Solr

同样,我们可以通过将 *:* 作为值传递给 q,从索引中提取所有记录,如下图所示。

Querying Data in Apache Solr

我们可以通过将two作为值传递给start参数,从次要记录中获取记录,如下图所示。

Querying Data in Apache Solr

限制记录数量

我们可以通过在参数rows中定义一个值来限制记录的数量。例如,我们可以将查询中的记录总数限制为 2,将值 2 传递到参数 rows 中,如下图所示。

Querying Data in Apache Solr

响应编写器类型

我们可以通过从wt参数的提供数据中选择一个来获取所需的文档类型响应。

Querying Data in Apache Solr

在上面的图像中,我们选择了 .csv 格式,以便从 Apache Solr 获取响应。

字段列表

如果我们在输出文档中需要特定字段,我们需要将所需字段的列表(以逗号分隔)作为值传递给属性 fl。

在下面的示例中,我们检索了字段 - id、phone 和 first_name。

Querying Data in Apache Solr

拼写检查

我们将看到使用 Solr 的拼写检查搜索组件。自动拼写检查是一项核心搜索功能,大多数用户希望无需思考即可工作。在拼写检查方面,您需要考虑四种常见情况

  • 显示的查询包含一个或多个拼写错误的术语,导致没有相关的命中。如果可用建议,我们的搜索客户端应该自动执行建议的术语并向用户显示信息性消息。例如,我们搜索了atmosphere,而不是the atmosphere
  • 它包含一个罕见的术语,导致少量命中;有建议可用并且有更多命中,因此您可能需要提示用户是否表示……?
  • 它包含一个拼写正确的术语,但它们的数据量与查询术语提供的数据量大致相同。我们的搜索解决方案不应提示用户做出备选决定。
  • 查询包含索引中不存在的术语;没有可用建议。

从以上给出的场景中,我们可以得到拼写检查解决方案的两个关键要求

  • 我们需要为查询中的每个术语确定建议的术语,即一些字典来查找与用户输入的术语相似的术语。
  • 其次,我们需要知道所有建议的术语匹配多少个文档。

拼写检查示例

我们可以使用 http 命令行实用程序运行代码列表,以使用拼写错误的术语 atmosphere 查询 Apache Solr,如本列表中所示。

使用拼写错误的查询术语“atmosphear”查询 Solr。

查询

响应