35

我有一个 Solr 索引,其中包含一组存储为Location类型的坐标;我想查询该字段具有非空值的文档。

对 Location 字段执行 NOT NULL 检查的查询语法是什么?

4

4 回答 4

63

规范的方式是这样的:

fieldName:[* TO *]

正如 Paige Cook 建议的那样,在左侧使用 a''可能也可以,但我不像上面那样相信它。由于这是一个位置字段,您可能必须针对两个底层实际字段之一而不是这个逻辑复合字段来执行此操作。fieldName它们以某种数字后缀开头和结尾;在模式浏览器中查看实际名称是什么。

这里需要注意的重要一点是,像这样的查询对于 Solr 来说是昂贵的,因为它在这个字段上进行了全索引扫描。如果您有许多不同的位置字段值(上千个?),那么这很重要。如果您在过滤器查询中执行此操作,那么它将被缓存并且可能没有实际意义。如果您希望此查询快速运行,那么在索引时您应该索引一个布尔字段以指示该字段中是否有值。

于 2012-05-23T18:14:26.927 回答
11

您可以将此添加到您的查询fieldname:['' TO *]中。这将等效于 NOT NULL 检查。

我从帖子中得到了这个 - Solr - Field Not Null Searches

于 2012-05-23T15:00:01.230 回答
6

对于位置字段(solr.LatLonType),使用以下过滤查询:(-fieldName:[-90,-180 TO 90,180]超出此范围的坐标仍然无效)

于 2015-10-30T09:31:05.620 回答
-6

试试这个q= !fieldname:NULL,这将等同于Fieldvalueis NOT NULL。

STW 问我有一个 Solr 索引,其中包含一组存储为 Location 类型的坐标;我想查询该字段具有非空值的文档。

对 Location 字段执行 NOT NULL 检查的查询语法是什么?

于 2017-06-15T11:44:11.357 回答