2009-07-29 9 views
3

문서 관리 시스템과 셰어 포인트 검색 서버라는 두 개의 별도 시스템이 있습니다.개별 API의 결과 합치기

두 시스템 모두 내에서 데이터를 검색하는 데 사용할 수있는 API가 있습니다. 동일한 데이터가 두 시스템에 모두 존재할 수 있으므로 두 가지를 모두 검색합니다.

api를 동시에 검색하고 결과를 병합하는 가장 효율적인 방법 (속도가 매우 중요)은 무엇입니까? 각 시스템의 API는 그 자체 스레드

  • 을 불려
  • 는 각 API의 결과가 배치

    1. 사용자가 검색어를 입력 :

      는/빨리 느린/좋은/다음 생각이 나쁜 동일한 유형의 일반적인 클래스는 IEnumerable
    2. 두 스레드를 실행 한 LINQ는 2는 IEnumerable 결과
    3. 결과
    4. 를 볼에 전달되는 객체를 서로 합류하는 데 사용

    응용 프로그램은 ASP.NET MVC C#입니다.

  • 답변

    1

    당신의 솔루션은 괜찮은 것처럼 보입니다. 어댑터 패턴을 사용하여 두 가지 다른 결과 피드를 필요한 형식으로 변환하고 전반적인 디자인은 외관 패턴입니다. 디자인 관점에서 볼 때 솔루션이 유효합니다.

    더 나은 결과를 얻으려면 결과가 도착하자마자 결과를 표시하고 모든 API가 값을 반환 할 때까지 결과가 계속로드된다는 알림을 표시 할 수 있습니다. 문서 관리 시스템이 셰어 포인트보다 훨씬 빠르거나 느린 경우 사용자 정보가 그렇게 빨리 전달됩니다.

    +0

    +1 어댑터 –

    0

    내가하는 방식에 아무런 이상이 보이지 않습니다. 알고리즘이 완벽한 결과를 얻으려면 시간이 오래 걸릴 수 있지만 균형을 유지해야합니다. 모든 최적화는 검색 알고리즘 (또는 문서 인덱싱)에서 수행되어야합니다. 스레드 실행 기간을 제한하여 사용자에게 충분한 히트 수를 여전히 손상시켜야합니다.