Skip to content

Instantly share code, notes, and snippets.

@matt-bernhardt
Created September 6, 2023 15:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matt-bernhardt/6bb838c1cf9d0f4fead7a1a740837a80 to your computer and use it in GitHub Desktop.
Save matt-bernhardt/6bb838c1cf9d0f4fead7a1a740837a80 to your computer and use it in GitHub Desktop.
Mermaid diagrams describing some search architectures
---
title: Theory of search
---
flowchart
  direction LR
  Capture --> Interpret
  Interpret --> Match
  Match --> Rank
  Rank --> Present
---
title: Area of inquiry
---
flowchart
  direction LR
  Capture --> Interpret
  Interpret --> Match
  Match --> Rank
  Rank --> Present
  style Match fill:#fff,color:#000;
  style Rank fill:#fff,color:#000;
---
title: TACOS
---
flowchart
  direction LR
  Capture --> I{Interpret}
  I -->|Most searches| Match
  I -->|Some searches| Lookup
  Match --> Rank
  Lookup --> Present
  Rank --> Present
  style I fill:#fff,color:#000;
  style Lookup fill:#76A8DA,color:#000;

Phases of search

Our current ecosystem of discovery applications implement the five phases of search as depicted below.

flowchart
  direction LR
  subgraph Bento
    Capture
    Present
  end
  subgraph TIMDEX
    subgraph OpenSearch
      Capture --> Interpret
      Interpret --> Match
      Match --> Rank
      Rank --> Present
    end
  end

The Bento application receives a search from the user, sends the information to TIMDEX, and receives back a list of sorted results. TIMDEX is essentially a wrapper for the OpenSearch service, and does not attempt to perform any of the interpretation, matching, or ranking of results itself.

Phases of search - future state

flowchart
  subgraph Bento
    Capture
    Present
  end
  subgraph TIMDEX
    I1{Interpret}
    subgraph OpenSearch
      I3["Interpret"]
      Match
      Rank
    end
  end
  subgraph TACOS
    T[Record +\nAnalyze]
  end
  subgraph Lookups
    E[(External APIs)]
  end
  Capture --> I1
  I1 -->|Most| I3
  I1 -->|Some| E
  I1 --> T
  I3 --> Match
  Match --> Rank
  Rank --> Present
  E --> Present

flowchart
  subgraph Bento
    Capture
    Present
  end
  subgraph TIMDEX
    I1{Interpret}
    Capture --> I1
    I1 -->|Most| I3
    subgraph OpenSearch
      I3["Interpret"]
      I3 --> Match
      Match --> Rank
      Rank --> Present
    end
  end
  subgraph TACOS
    I1 --> T2[Record +\nAnalyze]
    T2 --> I1
  end
  subgraph Lookups
    E[(External APIs)]
    I1 -->|Some| E
    E --> Present
  end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment