Skip to content

Feature: Add a "related topics" section to topics #17

Description

@prodiggy8

Description

User Story #10:
As a student, I want to see similar questions suggested while I type my question, so that I can avoid posting duplicates and quickly find answers that already exist.

Estimated effort: 5 days

Justification: This feature would make the forum much more efficient because it reduces duplicate questions and helps students find answers faster. However, it likely involves using search algorithms or machine learning, which can be technically complex for our team to implement. Since it may take more time and effort compared to other features, we decided to keep it as a lower priority for now.

Dependencies:

  • Ability to retrieve topic titles + first-post bodies from the DB or search index.
  • Backend comparison/search must exist before the composer UI can display suggestions.

Initial assignments (collaborative prototypes):

  • Levenshtein (near-duplicate detection): Prototype to catch typo/near-exact title matches.
  • Keyword/BM25 (topical similarity): Prototype to surface similar questions with different wording.
  • We’ll compare both prototypes and either combine them or adopt one as the final solution based on quality and latency.

Acceptance criteria (how we’ll test this):

  • While typing a question title in the composer, a suggestions panel shows up to 5 similar threads.
  • Clicking a suggestion opens the thread; composer content remains (not lost).
  • Only topics the user has permission to view are returned (no private/hidden leaks).
  • Near-duplicate titles (typos, tiny variations) are surfaced by the Levenshtein prototype.
  • Topical matches with different wording are surfaced by the Keyword/BM25 prototype.
  • If suggestions are too weak (below a threshold), the panel may remain hidden (avoid noise).

Difficulty:
if using NLP -> hard
if using string distance -> medium

Expected changes:

  • Backend:
    Adding a new API route taking a post and returning related posts (if string distance)
    Adding a new microservice to host the model (if NLP)

  • Frontend:
    Adding a new section in each posts with related posts

Community forum reference

No response

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions