Microsoft graph Mail Search 严格值

Microsoft graph Mail Search Strict value

我对搜索参数有疑问。我想在我的查询中传递一个短语。例如,我正在寻找主题为 "Test 1" 的电子邮件。 为此,我正在获取此资源。

https://graph.microsoft.com/v1.0/me/messages?$search="subject:Test 1"

但此查询的行为是:查找主题中包含 "Test" 或任何其他字段中包含 1 的邮件。 参考KQL Syntax

A phrase (includes two or more words together, separated by spaces; however, the words must be enclosed in double quotation marks)

所以,为了做我想做的事,我必须在我的短语周围加上双引号 (") 以进行严格的值搜索。如下所示

subject:"Test 1"

问题就出在这里。 Microsoft graph api 已经在参数 $search 后使用双引号 (")。

?$search="Key words"

所以我无法执行 KQL 文档中提到的操作。

https://graph.microsoft.com/v1.0/me/messages?$search="subject:"Test 1""

它抛出一个错误:

"Syntax error: character '1' is not valid at position 15 in '\"subject:\"test 1\"\"'.",

这是预期的行为。我很确定它不会起作用。

如果有人对解决方案或解决方法有任何建议,我是买家。

到目前为止我已经尝试过的:

此致。

编辑: 在 sasfrog 的回答之后: 我使用 $filter :它适用于简单的运算符 AND,OR.I 使用 Not 运算符时会出现一些错误。顺便说一句,您必须使用 orderby 参数按日期显示结果并在过滤器参数中添加字段。

示例 1(工作,我首先要求的):

https://graph.microsoft.com/v1.0/me/messages/?$orderby=receivedDateTime desc &$filter=receivedDateTime ge 1900-01-01T00:00:00Z AND contains(subject,'test 1')

示例 2(无效)

https://graph.microsoft.com/v1.0/me/messages/?$orderby=receivedDateTime desc &$filter=(receivedDateTime ge 1900-01-01T00:00:00Z AND contains(subject,'test 1')) NOT(contains(from/EmailAddress/address,[specific address]))

编辑 2 经过对过滤器参数的一些测试。 NOT 运算符仍然无法正常工作,因此要使用 "ne"(不等于)解决方法 示例 2 变为:

  https://graph.microsoft.com/v1.0/me/messages/?$orderby=receivedDateTime desc&$filter=(receivedDateTime ge 1900-01-01T00:00:00Z AND contains(subject,'test 1')) AND (from/EmailAddress/address ne [specific address])

更新:$search 的其他解决方案

使用 $filter 很棒,但它看起来有时很慢。所以我找到了解决我的问题的方法。 它是在所有术语之间使用 AND 运算符。

示例 4: 我正在寻找主题为 test 1 的邮件; 让值 = "test 1"。所以你必须使用 space 分隔符来拼接它。在写了一些代码来操作这个数组之后,得到如下的东西。

$search="(subject:test AND subject:1)"

如果您使用多字段搜索,括号可能很重要。瞧。

不确定它是否足以满足您正在做的事情,但是在 filter 查询中使用 contains 函数怎么样:

https://graph.microsoft.com/v1.0/me/messages?$filter=contains(subject,'Test 1')

听起来您已经在查看 doco,但here it is 以防万一。

Update 同样,这对我有用 search 方法:

https://graph.microsoft.com/v1.0/me/messages?$search="subject:'Test 1'"