Video Search & Recommendation

Markov Chain–Driven JavaFX Application

Demo Preview

App & User Interface

The entry point is App.java, a JavaFX Application that loads the FXML scene Searching.fxml into a 1920×1080 stage:contentReference[oaicite:0]{index=0}.

Vdeo Data & Nodes

Each video is wrapped in a MarkovNode containing:

Nodes track how likely one video leads to another. Clicking videos updates probabilities, strengthening links between them:contentReference[oaicite:3]{index=3}.

Markov Chain Model

The MarkovChain class builds a probabilistic network of video nodes:

User clicks video B after video A:
→ prevNode.changeProb(B, +1)
→ Increases probability coefficient
→ Video B more likely to appear in future searches
      

Search Algorithm

The SearchAlgorithm class implements fuzzy matching + weighted ranking:

Result: A personalized, evolving ranking of videos.

Controller Flow

The UI’s PrimaryController ties everything together:

  1. User types a query in txtSearch.
  2. Clicks Search → calls SearchAlgorithm with current MarkovChain:contentReference[oaicite:10]{index=10}.
  3. Receives a Hashtable<MarkovNode, Double> of results (video nodes with probabilities).
  4. Passes results to generateImaging() for rendering thumbnails + stats.
  5. User clicks a video → updates Markov chain, reinforcing personalization:contentReference[oaicite:11]{index=11}.

Summary of Systems