Email 快速搜索特定范围的电子邮件的好方法是什么?

Email 快速搜索特定范围的电子邮件的好方法是什么?,email,search,imap,Email,Search,Imap,因为我需要搜索一个定义的日期范围内的用户电子邮件与几十个查询,最好是在一个安全的方式 对于Gmail来说,这很容易,而且应用程序已经支持Gmail了 然而,对于IMAP来说,情况并非如此。IMAP搜索似乎非常慢 最好的方法是下载日期范围内的所有电子邮件并在本地进行搜索吗?例如,基本上在x时间内保留一份本地副本,并将其用于所有搜索需求?如果是这样的话,有人对搜索这些电子邮件的最佳方式有什么看法吗 有没有一种直接搜索IMAP的方法不会遇到速度问题 我曾尝试过第三方解决方案,如who承诺的“电子邮件A

因为我需要搜索一个定义的日期范围内的用户电子邮件与几十个查询,最好是在一个安全的方式

对于Gmail来说,这很容易,而且应用程序已经支持Gmail了

然而,对于IMAP来说,情况并非如此。IMAP搜索似乎非常慢

最好的方法是下载日期范围内的所有电子邮件并在本地进行搜索吗?例如,基本上在x时间内保留一份本地副本,并将其用于所有搜索需求?如果是这样的话,有人对搜索这些电子邮件的最佳方式有什么看法吗

有没有一种直接搜索IMAP的方法不会遇到速度问题

我曾尝试过第三方解决方案,如who承诺的“电子邮件API”,但它们似乎只是通过管道将内容传送到IMAP搜索,而且速度同样缓慢


任何提示或提示都将不胜感激

当你说“IMAP”时,你心里有没有特别的服务器?实际上有几十种常见的实现,有些实现的搜索速度比其他实现快,或者完全被破坏。本地缓存可能很快,但一开始就很慢。您需要进行什么样的查询?IMAP搜索通常非常原始。一般来说,您应该期望一些服务器会按照您为每条消息提供的顺序评估您的搜索词。避免重复搜索(如果昨天搜索到UID 12345,今天从12346开始),并将经常优化的搜索词(UID、标志、标题)放在正文或文本词之前。平均来说,本地下载和搜索可以很好地工作,但最糟糕的情况是拥有一千万条消息的用户。(我的一个PDA邮件客户端在启动时崩溃。它连接到服务器,看到我的邮件,心脏病发作。)@arnt关于将某些搜索词放在第一位的非常好的提示。我想这意味着我也应该从开始和之前开始,所以它不会先搜索所有电子邮件中的身体部位,然后在搜索后限制搜索结果?@Max我需要进行可能只搜索一次的搜索,所以虽然我可以缓存它们,但不会有太大帮助。用例是在电子邮件中查找收据,搜索可能类似于一个变量的不同种类的长列表或语句,受自日期和截止日期范围的限制。通常,用户必须并行运行数百次搜索才能使应用程序发挥作用,因此如果IMAP无法解决这一问题,并且会在我身上超时,那么最好在本地加载所有内容并在客户端上运行它们。顺便说一句,我发现使用SINCE/BEFORE和SENTSINCE/SENTBEFORE来限制日期范围有很大的不同。后者的性能差2-3个数量级(分钟比一位数秒)