Google Workspace用户查询中{PREFIX}*通配符行为不符文档定义咨询
解决Google Admin SDK用户查询返回不符合预期结果的问题
我一眼就看出问题出在哪啦!你用的givenName:Mark*查询,在Google Admin SDK的语法里,是匹配givenName字段里任意一个词以Mark开头的用户,而不是整个givenName字段以Mark开头。所以像Edward Mark这种用户,如果他的givenName字段里包含"Mark"这个词(比如有些用户的givenName被填成了全名),就会被这个查询命中,哪怕Mark不是名字的开头。
要实现你真正想要的「givenName字段本身以Mark开头」的前缀匹配,只需要把查询词用双引号括起来就行,修改后的代码如下:
Users result = service.users().list() .setCustomer("my_customer") .setQuery("givenName:\"Mark*\"") // 这里给查询词加上双引号 .setOrderBy("givenName") .setMaxResults(10) .execute();
带引号的"Mark*"会告诉查询引擎:只匹配整个givenName字段前缀是Mark的用户,比如Mark、Markus、Mark Anthony这类,再也不会返回那些名字里包含Mark但不是开头的用户啦。
你可以顺便检查下那些被错误返回的用户的givenName字段,大概率是他们的givenName被设置成了包含Mark的多词内容(比如全名),这也是不带引号的查询会命中他们的原因。
内容的提问来源于stack exchange,提问作者Mark Pukias
相关产品推荐
相关产品推荐

