我正在尝试编写一个查询来检查文档中是否存在某个字段。该字段仅在查询时已知,并且可以是不同类型:int、string、bool、多值/单值。 我熟悉执行此操作的两种语法,这两种语法似乎都有效:
my_field:*
my_field:[* TO *]
两者有什么区别?
适用于 Solr v5(及更高版本)
文档说:
查找任何其值介于有效值之间的文档 该字段类型的 -Infinity 和 +Infinity 值。field:[* TO *]
和
对于大多数字段,无界范围查询,
,是 相当于存在查询,field:[* TO *]
。但是,对于浮点/双精度 支持 NaN 值的类型,这两个查询的执行方式不同。field: *
匹配所有现有值,包括 NaNfield:*
匹配所有实数值,不包括 NaNfield:[* TO *]
https://solr.apache.org/guide/solr/latest/query-guide/standard-query-parser.html#range-searches
因此,搜索查询的定义方式以及搜索的执行方式可能有所不同,但在大多数情况下,行为是相同的。