当我在查看查询参数here的文档时,我注意到有两个查询参数似乎完全相同:WHERE
和filter
。
我只是想知道它们之间有什么区别,什么时候用完了。
答案 0 :(得分:2)
搜索和过滤器都会减少最终获得的结果集,但是以不同的方式进行操作。
这在Microsoft文档中有所说明:
Returns results based on search criteria.
Filters results (rows).
(搜索可能返回的结果)出于性能方面的考虑,最好同时使用两者,通过搜索来缩小结果范围(例如,使用搜索索引),然后对返回的结果进行精细过滤。
答案 1 :(得分:2)
尽管它们相似,但操作却有所不同。
$search
使用Keyword Query Language (KQL),并且仅受message
和person
集合的支持(即,大多数端点上不能使用$search
)。默认情况下,它搜索多个属性。最重要的是,$search
是一个“包含”搜索,这意味着它将在字符串中的任何位置查找您的搜索词/短语。
例如,/messages?$search="bacon"
将在from
,subject
或body
属性中的任何位置搜索单词“ bacon”。
与$search
不同,$filter
参数仅搜索指定的属性,不支持“包含”搜索。它也几乎适用于每个端点。在大多数地方,它支持以下运算符:等于({eq
),不等于(ne
),大于(gt
),大于或等于(ge
) ,小于(lt
),小于或等于(le
)和({and
)或(or
)而非(not
),和(在某些端点上)以(startsWith
开头。
例如,/messages?$filter=subject eq 'bacon'
仅返回主题 为“培根”的邮件。