我正在尝试学习OData版本4协议,并使用Northwind数据库来运行查询。
OData 4使用$search
引入了自由文本搜索,但我尝试过的查询都失败了。
我尝试了几件事(有很多变种):
我收到的错误消息是:The query parameter '$search' begins with a system-reserved '$' character but is not recognized.
官方docs在这里不多说,只提供另一个source的确切格式。但是,格式对我来说非常神秘......
从文档中,一般的想法是http://host/service/Products?$search=blue OR green
,这似乎与我的例子一致。所以不确定我在这里做错了什么。
以前有没有人成功使用过这个并且可以给我一个例子?谢谢!
答案 0 :(得分:3)
您收到http://services.odata.org/V4/Northwind/Northwind.svc的错误消息,因为此服务尚未更新以支持$ search。 ODL开始支持版本6.1.0中的$ search。请查看6.1.0 release notes
From the spec," $ search system query选项将结果限制为仅包含与指定搜索表达式匹配的实体。匹配意味着什么的定义取决于实施。"由于匹配规则取决于服务实现,因此服务可以确定与搜索表达式匹配的属性或甚至属性组合。
此服务http://odatae2etest.azurewebsites.net/demo/DefaultService/只是实现了$ search,此服务选择使用第一个字符串类型属性来匹配搜索表达式。
对于这项服务,http://odatae2etest.azurewebsites.net/demo/DefaultService/ProductDetails?$ search = snack实际上是指返回ProductDetails,其描述包含' snack'。
否则,$ search支持AND,OR,NOT操作。