Solr - 如何构造需要NOT NULL位置字段的查询

时间:2012-05-23 14:32:25

标签: solr geospatial solr-query-syntax

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

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

4 个答案:

答案 0 :(得分:40)

规范的方式是:

fieldName:[* TO *]

在Paige Cook建议的左侧使用''可能也会起作用,但我不像我上面那样信任它。由于这是一个位置字段,您可能必须针对这两个基础实际字段之一与此逻辑复合字段进行此操作。它们以fieldName开头,以某种数字后缀结尾;查看模式浏览器以查看实际名称。

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

答案 1 :(得分:7)

您可以将其添加到您的查询fieldname:['' TO *]。这将相当于NOT NULL检查。

我是从帖子Solr - Field Not Null Searches

获得的

答案 2 :(得分:4)

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

答案 3 :(得分:-3)

试试这个q= !fieldname:NULL这相当于Fieldvalue是非空的。

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

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