Solr-如何构造需要非空位置字段的查询
我有一个Solr索引,其中有一组坐标存储为Solr-如何构造需要非空位置字段的查询,solr,geospatial,solr-query-syntax,Solr,Geospatial,Solr Query Syntax,我有一个Solr索引,其中有一组坐标存储为位置类型;我想查询此字段具有非空值的文档 对位置字段执行非空检查的查询语法是什么?您可以将其添加到查询字段名:[''到*]。这将相当于非空检查 我从博文中得到了这个-标准方法是: fieldName:[* TO *] 按照Paige Cook的建议,在左侧使用”,可能也会起作用,但我不像上面那样信任它。由于这是一个位置字段,您可能需要对两个底层实际字段中的一个进行操作,而不是对这个逻辑复合字段进行操作。它们以fieldName开头,以某种数字后缀结尾;
位置
类型;我想查询此字段具有非空值的文档
对位置字段执行非空检查的查询语法是什么?您可以将其添加到查询
字段名:[''到*]
。这将相当于非空检查
我从博文中得到了这个-标准方法是:
fieldName:[* TO *]
按照Paige Cook的建议,在左侧使用”
,可能也会起作用,但我不像上面那样信任它。由于这是一个位置字段,您可能需要对两个底层实际字段中的一个进行操作,而不是对这个逻辑复合字段进行操作。它们以fieldName
开头,以某种数字后缀结尾;在模式浏览器中查看实际名称
这里需要注意的一件重要事情是,对于Solr来说,这样的查询代价很高,因为它需要对该字段进行完整的索引扫描。如果您有许多不同的位置字段值(上千?),那么这是一件大事。如果您在过滤器查询中这样做,那么它将被缓存,并且可能没有意义。如果希望此查询快速运行,则在索引时,应索引布尔字段以指示此字段中是否有值。对于位置字段(solr.LatLonType),请使用以下筛选器查询:
-fieldName:[-90,-180到90180]
(此范围之外的坐标仍然无效)尝试此q=!fieldname:NULL
这将等同于Fieldvalue
不为NULL
STW询问
我有一个Solr索引,其中有一组坐标存储为位置类型;我想查询此字段具有非空值的文档
对位置字段执行NOTNULL检查的查询语法是什么?谢谢Paige,但不幸的是,这似乎不适用于
位置
进一步扩展,字段以及支持字段都是数字;根据“
对它们进行评估会产生一个NumberFormatException,我没有意识到这是数字。David Smiley给出了正确的答案。感谢David,[*TO*]语法与检查两个支持字段相结合,似乎工作正常(例如,字段0\u coord:[*TO*]和字段1\u coord:[*TO*]
)。也谢谢你的表演技巧!你不必对两个坐标场都这样做,这是两倍的速度,只有一个。如果一个有值,另一个有值,反之亦然。因为我刚刚在我们的项目中遇到了这个“解决方案”:不要将其用于字符串字段。查询!fieldname:NULL
不工作,显示错误400:java.text.ParseException:缺少参数:NULL