Skip to content

Add server-side full-text experiment search with SQLite FTS5 - #199

Merged
inutano merged 1 commit into
masterfrom
add-fts-search
Mar 11, 2026
Merged

Add server-side full-text experiment search with SQLite FTS5#199
inutano merged 1 commit into
masterfrom
add-fts-search

Conversation

@inutano

@inutano inutano commented Mar 3, 2026

Copy link
Copy Markdown
Owner

Summary

  • Add a SQLite FTS5 virtual table (experiments_fts) populated from ExperimentList_adv.json at app startup, enabling fast ranked full-text search across all experiment fields (SRX/SRA/GEO IDs, genome, antigen, cell type, title, attributes)
  • Add GET /data/search endpoint with params: q (required), genome (optional filter), limit (optional, default 20, max 100)
  • Update MCP chipatlas_search_experiments tool to use the new server-side endpoint instead of downloading the entire ExperimentList.json and filtering client-side

Test plan

  • Run rake db:migrate to create the FTS5 table
  • Start the app — verify FTS table populates from JSON at boot
  • curl "http://localhost:9292/data/search?q=H3K4me3&limit=5" — returns ranked results
  • curl "http://localhost:9292/data/search?q=HeLa&genome=hg38" — genome filtering works
  • Test MCP chipatlas_search_experiments tool returns results with the new genome parameter

🤖 Generated with Claude Code

Replace client-side filtering of the full ExperimentList.json with a
server-side FTS5 search endpoint (GET /data/search). The FTS5 virtual
table is populated from ExperimentList_adv.json at app startup and
supports ranked full-text search across all experiment fields including
SRA/GEO IDs, title, and attributes. The MCP tool now calls this
endpoint instead of downloading the entire experiment list.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@inutano
inutano merged commit b06f58e into master Mar 11, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant