Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solr-如何构造需要非空位置字段的查询_Solr_Geospatial_Solr Query Syntax - Fatal编程技术网

Solr-如何构造需要非空位置字段的查询

Solr-如何构造需要非空位置字段的查询,solr,geospatial,solr-query-syntax,Solr,Geospatial,Solr Query Syntax,我有一个Solr索引,其中有一组坐标存储为位置类型;我想查询此字段具有非空值的文档 对位置字段执行非空检查的查询语法是什么?您可以将其添加到查询字段名:[''到*]。这将相当于非空检查 我从博文中得到了这个-标准方法是: fieldName:[* TO *] 按照Paige Cook的建议,在左侧使用”,可能也会起作用,但我不像上面那样信任它。由于这是一个位置字段,您可能需要对两个底层实际字段中的一个进行操作,而不是对这个逻辑复合字段进行操作。它们以fieldName开头,以某种数字后缀结尾;

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


对位置字段执行非空检查的查询语法是什么?

您可以将其添加到查询
字段名:[''到*]
。这将相当于非空检查


我从博文中得到了这个-

标准方法是:

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