Solr 查询数据

 

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

在下表中,我们列出了 Apache Solr。

参数 说明
q 是Apache Solr的主要查询参数。它们的相似度将文档与此参数中的术语打分。
fq 代表Solr的过滤查询,将结果集限制为匹配这个过滤器的文档。
start 它代表页面结果的初始偏移量,该参数的默认值为0。
rows rows 参数表示每页需要检索的文件数。该参数的默认值为十。
sort 指定以逗号分隔的字段列表,查询结果将根据该列表进行排序。
fl 它指定要为结果集中的所有文档返回的字段列表。
wt 此参数表示我们想要查看结果的响应编写器的类型。

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

在 Apache Solr 中查询数据

 

检索记录

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

在 Apache Solr 中查询数据

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

Querying Data in Apache Solr

我们可以通过传递两个从二级记录中获取记录作为 start 参数的值,如下面的屏幕截图所示。

在Apache Solr中查询数据

 

限制记录数

我们可以通过定义一个值来限制记录数在参数行s。例如,我们可以将 Query 中的记录总数限制为 2,将值 2 绕过到参数行中,如下面给定的屏幕截图所示。

Querying Data in Apache Solr

 

Response Writer Type

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

Querying Data in Apache Solr

我们选择了 .csv 格式来获取上图中 Apache Solr 的响应。

 

字段列表

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

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

Q在 Apache Solr 中查看数据

 

拼写检查

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

显示的查询包含一个或多个拼写错误的术语,导致没有相关匹配。如果有建议可用,我们的搜索客户端应自动执行建议的术语并向用户显示信息性消息。例如,我们搜索的是atmosphere,而不是大气。

它包含一个罕见的术语,导致一些点击;建议可用且点击率更高,因此您可能想要提示用户您的意思是……?

它包含拼写正确的术语,但它们的数据与查询术语中提供的数据较少或大致相同。我们的搜索解决方案不应提示用户做出替代决定。

查询包含索引中不存在的术语;建议不可用。

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

我们需要为查询中的每个术语确定建议的术语,即一些字典来查找与用户输入的术语相似的术语。

其次,我们需要知道所有建议的术语匹配的文档数量。

 

拼写检查示例

我们可以使用 http 命令行实用程序来运行代码清单,以使用拼写错误的术语大气来查询 Apache Solr,如下所示列表。

使用拼写错误的查询词"atmosphear"查询 Solr。

查询

http://localhost:8983/solr/solrpedia/select?q=atmosphear

响应

<response>
<lst name=

"responseHeader"

>...</lst>
<result name=

"response"

 numFound=

"0"

 start="0"></result>
<lst name=

"spellcheck"

>
<lst name=

"suggestions"

>
<lst name=

"atmosphear"

>
<

int

name=

"numFound"

>1</int>
...
<arr name=

"suggestion"

>
<str>atmosphere</str>
</arr>
</lst>
<lst name=

"collation"

>
<str name=

"collationQuery"

>atmosphere</str>
<

int

name=

"hits"

>86</int>
<lst name=

"misspellingsAndCorrections"

>
<str name="atmosphear">atmosphere</str>
</lst>
</lst>
</lst>
</lst>
</response>

 分面是 Solr 最有用的功能之一。当我们将其与传统数据库和 NoSQL 数据存储进行比较时。分面搜索(也称为分面导航或分面浏览)允许用户查看其搜索结果的高级细分,这些搜索结果基于其文档的一个或多个方面进行搜索。 ...