【问题标题】:Joining results from separate API's together将来自不同 API 的结果连接在一起
【发布时间】:2009-07-29 10:38:07
【问题描述】:
我有 2 个独立的系统 - 一个文档管理系统和一个共享点搜索服务器。
两个系统都有一个 API,我可以使用它来搜索其中的数据。相同的数据可能存在于两个系统中,所以我们都在搜索。
同时搜索两个api并将结果合并在一起的最有效方法是什么(速度非常重要)。
以下想法是坏/好/慢/快:
- 用户输入搜索词
- 每个系统的 api 在它自己的线程上调用
- 每个 api 的结果都放在同类型的通用 IEnumerable 类中
- 当两个线程都已执行时,linq 用于将 2 个 IEnumerable 结果对象连接在一起
- 结果传递给查看
应用程序是 ASP.NET MVC C#。
【问题讨论】:
标签:
c#
asp.net
asp.net-mvc
linq
search
【解决方案1】:
您的解决方案看起来不错 - 您正在使用适配器模式将两个不同的结果提要转换为您所需的格式,并且整体设计是外观模式。从设计的角度来看,您的解决方案是有效的。
如果您想让事情变得更好,您可以在结果到达后立即显示结果,并显示结果仍在加载中的通知,直到所有 API 都返回一个值。如果您的文档管理系统明显快于或慢于 sharepoint,它会以这种方式更快地为用户提供信息。
【解决方案2】:
我认为您的做法没有任何问题。您的算法可能需要很长时间才能产生完美的结果,但您需要取得平衡。任何优化都必须在搜索算法(或者更确切地说是文档索引)中完成。您仍然必须通过限制线程执行的持续时间来权衡多少次命中对用户来说足够好。