Use cases

Search for articles and research

Blogs, news archives, knowledge bases and research libraries: readers search titles, authors and topics, then narrow by year. Try it on 9,000 of the most cited machine learning papers.

What readers search for.

atention is all you need

Half-remembered titles

Typos and prefixes still find the article, and a match in the title beats one in the text.

LLM

Acronyms and jargon

Synonyms connect acronyms to their words, so LLM finds large language model, and the other way round.

2020–2025 · Most cited

Dates and popularity

Filter by year or date range, facet by topic, and sort by newest or most read.

What to upload.

One record per article. Here's a paper from the demo. The recipe in the docs goes through every field.

record.json
{  "objectID": "1706.03762",  "title": "Attention Is All You Need",  "authors": ["Ashish Vaswani", "Noam Shazeer", "…"],  "authorCount": 8,  "abstract": "The dominant sequence transduction models…",  "categories": ["cs.CL", "cs.LG"],  "year": 2017,  "published": 1497290254,  "citations": 26678}
  • Authors are a list. The second searchable field holds 1 KB, so long author lists keep their first names.
  • Dates twice: published in Unix seconds to sort by, and year to filter.
  • A searchable field holds 16 KB, so search the summary and opening, or split long articles into sections.
  • Popularity, such as views or citations, is a number to sort by.

Settings and search.

Choose the settings once, from your server or the dashboard. Searches then run straight from the browser with the index's public ID.

server · settings.ts
await papers.replaceSettings({  ...(await papers.getSettings()),  searchableAttributes: [    { field: "title", weight: 8 },    { field: "authors", weight: 3 },    { field: "abstract", weight: 1 },  ],  facetFields: ["categories"],  filterFields: ["year"],  customRanking: [{ field: "citations", direction: "desc" }],  synonyms: [["llm", "large language model"]],  didYouMean: true,})
browser · search.ts
const results = await client.search({  q: "retrieval augmented generation",  filters: { year: { gte: 2020 } },  facets: ["categories"],  highlight: true,})

Good to know.

  • Popularity only settles near-ties: custom ranking orders results within 10% of the best match. For the most read first, offer a sort.
  • A record with more text than a field holds is rejected, so cut or split long text before you upload it.
  • Common words and plurals are handled for English, German, Danish, Norwegian and Swedish, and common words for Icelandic.

Questions, answered.

Can readers search the full text?

An index searches up to five fields: two hold 1 KB of text, for titles and names, and three hold 16 KB. Longer articles search their summary and opening, or become a record per section, like docs.

Can the most read articles come first?

Among equally good matches, yes: custom ranking orders them by views or citations. To put popularity first, add a sort such as Most read.

Do you support several languages?

Yes, with an index per language. Searches ignore case and accents in any language, and the languages setting adds common words and plurals for six.

Other kinds of data.

Online stores

Typos, facets that keep counting, price sliders and sorts, for catalogs from a hundred products to a million.

Docs and help centers

Make each section a record, and a search lands on the right heading with the matching words highlighted.

Start free with 10,000 records.

Upload your records, copy a public ID, and put search on your site today.