如何解决使用ews java api时,模糊搜索文件夹邮件,中文字符导致的搜索异常问题

海锋 冉 0 信誉分
2025-11-19T09:17:52.77+00:00

开发人员目的是为了对keyword这一搜索关键字进行邮件正文的模糊搜索,想要搜索到包含keyword的邮件。

在使用ews java api时,使用如下方法1进行服务器远程邮件搜索

// 1. 创建Body字段的模糊搜索过滤器
SearchFilter bodyFilter = new SearchFilter.ContainsSubstring(
        EmailMessageSchema.Body,    // 仅搜索邮件正文
        keyword,               // 搜索关键词(支持中文短语)
        ContainmentMode.Substring,  // 子串包含(模糊匹配)
        ComparisonMode.IgnoreCaseAndNonSpacingCharacters   // 忽略大小写
);

// 调用findItems进行模糊匹配查询
FindItemsResults<Item> findResults = service.findItems(new FolderId(folderId), bodyFilter, view);

方法1是指定对邮件正文进行模糊搜索

或者使用如下方法2进行搜索

// 调用findItems进行模糊匹配查询
FindItemsResults<Item> findResults = service.findItems(new FolderId(folderId), keyword, view);

方法2是利用关键字参数直接传参,findItems会自动去模糊匹配多项,包括邮件正文。

上述2个方法,都出现了一个共同问题:若keyword包含中文,则结果可能不准。

举例:

若某邮件A正文包含中文字符“你安排一下”,无论使用上述2种方法哪一种

1、当keyword为“安排”时,均可搜索到邮件A;

2、当keyword为“安排一下”时,均无法搜索到邮件A;

3、当keyword为“安”时,均可搜索到邮件A;

4、当keyword为“排”时,均无法搜索到邮件A。

经询问ai工具,可能是由于exchange本地服务中文检索的问题,请问该如何解决上述问题,保证正文字符的检索正常呢?

Exchange | Exchange 服务器 | 其他
Exchange | Exchange 服务器 | 其他
由Microsoft开发的可靠电子邮件、日历和协作平台,专为企业级通信和数据管理而设计。不属于特定类别的其他主题。
{count} 票

1 个答案

排序依据: 非常有帮助
  1. Hin-V 12,980 信誉分 Microsoft 外部员工 仲裁人
    2025-11-19T10:57:57.98+00:00

    此回复为自动翻译,因此可能存在语法错误或表达不自然的地方。

    您好 @海锋 冉
    感谢您在 Microsoft Q&A 论坛发布问题。

    我们理解您正在考虑在使用 EWS Java API 时改进 Exchange Server 中针对中文关键字的搜索功能。

    目前,我尚未找到任何适合的方法。作为论坛版主,由于隐私和安全限制,我们无法访问排查此问题所需的详细系统。此外,由于自动翻译支持,可能无法更准确地反映您的问题,而您的情况相当复杂,在此阶段,由于信息有限,我们无法最终确定根本原因。

    要调查此问题,我建议您前往 [GitHub 社区论坛] 进行更深入的技术探讨,或联系在此类定制化方面有经验和专业知识的个人。某些功能可能会因具体环境和配置而表现不同或受到限制。那里有许多经验丰富的开发人员和微软专家,他们可以帮助排查问题并指导您完成整个过程。

    请注意,本帖中链接的资源仅提供英文版本。对于偏好或需要中文内容的用户,我们深表歉意。目前该资料的中文版本尚未由来源方提供。如果您需要理解内容,建议使用可信的翻译工具或服务。

    感谢您的耐心和理解。如果您有任何其他疑虑,请随时在下方留言,我将非常乐意为您提供帮助。


    注意:如果您想接收此主题的相关电子邮件通知,请按照我们文件中的步骤启用电子邮件通知: 更改 Microsoft Q&A 首选项

    0 个注释 无注释

你的答案

提问者可以将答案标记为“已接受”,版主可以将答案标记为“已推荐”,这有助于用户了解答案是否解决了提问者的问题。