如何从solr查询特定记录?

how to query a specific record from solr?

这是数据的样子。

id = 54,
name = john,
date_of_birth = 02-02-02

id = 55,
name = julie

当没有应用过滤器时,只有那些没有 date_of_birth 字段的记录应该被显示,但是如果用户想检查哪个记录有 date_of_birth 字段,那么只有那些记录显示 date_of_birth 字段。我们如何使用 solr 实现这一目标?

您可以通过查询 *:* -date_of_birth:[* TO *] 来 select 没有字段的记录,并且您可以通过查询 date_of_birth:[* TO *] 来查询具有特定字段的所有文档.

如果您查看这些查询,您可能会发现它们之间的关系:

date_of_birth:[* TO *]

.. 生成包含该字段的文档列表。在另一个(第一个)查询中,我们使用相同的查询,但现在我们将其减去为否定查询——这意味着任何匹配它的文档都将从它前面的文档集中删除。特殊查询 *:* 表示 "all documents in the index".

*:* -date_of_birth:[* TO *]

如果这是您查询的唯一部分,您通常可以删除 *:* 部分,因为如果查询完全否定,Solr 会自动将其添加到您的查询前面。但是,如果它是较大查询的一部分,则需要自己预先设置 *:*