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

STW*_*STW 28 solr geospatial solr-query-syntax

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

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

Dav*_*ley 44

规范的方式是这样的:

fieldName:[* TO *]
Run Code Online (Sandbox Code Playgroud)

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

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


Pai*_*ook 7

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

我从post- Solr - Field Not Null Searches得到了这个


mir*_*lon 6

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