如何从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 会自动将其添加到您的查询前面。但是,如果它是较大查询的一部分,则需要自己预先设置 *:*
。
这是数据的样子。
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 会自动将其添加到您的查询前面。但是,如果它是较大查询的一部分,则需要自己预先设置 *:*
。