代码之家  ›  专栏  ›  技术社区  ›  eglasius

在2016-09-01-Preview回归之后,是否有新的方法可以在Azure搜索的odata过滤器中与NaN进行比较?

  •  2
  • eglasius  · 技术社区  · 6 年前

    通过版本2016-09-01-Preview及更高版本的rest API在Edm.Double字段中查找与NaN匹配的文档的官方方法是什么?

    {"filter":"(doublefield eq NaN)","select":"id","top":10,"skip":0,"count":true}
    

    完整的复制信息如下

    {  
       "name":"indexnamehere",
       "fields":[  
          {  
             "name":"doublefield",
             "type":"Edm.Double",
             "searchable":false,
             "filterable":true,
             "sortable":true,
             "facetable":false,
             "key":false,
             "retrievable":true
          },
          {  
             "name":"id",
             "type":"Edm.String",
             "searchable":false,
             "filterable":true,
             "sortable":true,
             "facetable":false,
             "key":true,
             "retrievable":true
          }
       ]
    }
    

    文件:

    {  
       "value":[  
          {  
             "id":"60660cd3b9e24d26ae3609926f44aead",
             "doublefield":"NaN",
             "@search.action":"upload"
          },
          {  
             "id":"70660cd3b9e24d26ae3609926f44aead",
             "doublefield":"2",
             "@search.action":"upload"
          }
       ]
    }
    

    查询1-查找文档:

    {"filter":"(doublefield eq 2)","select":"id","top":10,"skip":0,"count":true}
    

    {“filter”:(doublefield eq NaN)”,“select”:“id”,“top”:10,“skip”:0,“count”:true}
    

    not(doubleField ge -INF) and doubleField ne null

    1 回复  |  直到 6 年前
        1
  •  2
  •   Bruce Johnston    6 年前

    从API版本2016-09-01-Preview开始,Azure Search现在实现了IEEE 754语义,以便与 NaN ,根据 clarified OData V4.01 specification .

    特殊值NaN不等于任何东西,甚至不等于它本身。

    我们在API版本边界上进行了此更改,以避免破坏现有应用程序,但使用2016-09-01-Preview或更高版本的应用程序无法检测到 在两个领域。如果你需要有某种哨兵的价值 Edm.Double 字段,建议使用 null 因为你可以检查 无效的

    允许 被索引已经证明是有问题的,我们正在考虑在未来的API版本中完全不允许它。

    推荐文章