About

Meta-Search is a tool to search papers, like Google Scholar, but built with a particular workflow in mind: Focusing on meta-analysis and literature reviews rather than individual results. The default search works as in other search engines, but clicking the icon will then search the relevant meta-analyses.

In addition to search, you can also search directly for all citations, sorted by recency with sys/meta separated from the rest

Endpoints:

  • /?s=... will search for papers that match that title
  • /?meta_for_id=... will return meta-analysis/ systematic reviews that cited the paper that matches the provided Semantic Scholar ID
  • /citations_for_doi?doi=... will return papers that cite the paper that matches that doi, sorted by date and wether or not they are systematic reviews/meta-analysis
  • /citations_for_title?title=... As above but for paper titles. If the title matches more than one paper, the first one will be considered for citations. Using the DOI search is preferred.

Tech

Frontend

As an overall framework, Meta-Search is built on top of Next.js+Redux with some TailwindCSS to make it look nice.

Backend

There is no backend! Well, there are a bunch of serverless functions that Next.js generates automatically. On first load, the page makes use of server side rendering for speed. The site is hosted on Zeit.co, and all calls to my internal API or the website endpoints are cached, as the underlying dataset doesn't change.

The data is some ~200Gb of tables in a single Postgres instance in AWS, with a Hasura GraphQL server sitting in front. Postgres allows me to do full-text search and to use composite indices for search, so I don't need extra infraestructure to make this work. Eventually this will be migrated to AWS Aurora, and the whole thing will be purely serverless and able to handle any load.

Other

I test with cypress+percy, this takes screenshots of various pre-set website interactions and compares them with prior approved ones. It runs automatically via Github Actions.

For logging I rely on Sentry and Loggly.