jackwener/OpenCLI · warning · EmptyResultError

No dblp venues matched "${query}".

Error message

No dblp venues matched "${query}".

What it means

An EmptyResultError raised by the dblp venue command when the venue search API returned HTTP/API 200 but zero hits for the query. It signals a successful search with no matching venues — not a network or API failure.

Source

Thrown at clis/dblp/venue.js:60

    access: 'read',
    description: 'Search dblp venue registry (conferences / journals) by name or acronym',
    domain: 'dblp.org',
    strategy: Strategy.PUBLIC,
    browser: false,
    args: [
        { name: 'query', positional: true, required: true, help: 'Venue name or acronym (e.g. "ICLR", "neural networks")' },
        { name: 'limit', type: 'int', default: 20, help: 'Max venues (1-100, single dblp page)' },
    ],
    columns: ['rank', 'acronym', 'venue', 'type', 'url'],
    func: async (args) => {
        const query = requireQuery(args.query);
        const limit = requireBoundedInt(args.limit, 20, 100);
        const path = `/search/venue/api?q=${encodeURIComponent(query)}&format=json&h=${limit}`;
        const json = await dblpFetchJson(path, 'dblp venue');
        const hits = json?.result?.hits?.hit;
        const list = Array.isArray(hits) ? hits : [];
        if (list.length === 0) {
            throw new EmptyResultError('dblp venue', `No dblp venues matched "${query}".`);
        }
        return list.slice(0, limit).map((hit, i) => venueHitToRow(hit, i + 1));
    },
});

View on GitHub (pinned to 49907e53dc)

Solutions

  1. Broaden the query — try a shorter or alternate spelling of the venue name
  2. Check dblp's canonical venue name in a browser at the same search URL
  3. Try the acronym dblp uses (e.g. 'CVPR', 'ICML') instead of the full name
  4. If the venue truly has no dblp entry, search publications instead of venues

Example fix

// before
const json = await dblpFetchJson('/search/venue/api?q=' + encodeURIComponent('Neural Information Processing Systems Conference'), 'dblp venue'); // 0 hits
// after
const json = await dblpFetchJson('/search/venue/api?q=' + encodeURIComponent('NeurIPS'), 'dblp venue');
Defensive patterns

Strategy: fallback

Validate before calling

const q = query.trim();
if (!q) throw new Error('Venue query must be non-empty');
// No pre-call check can guarantee hits; only the response can.
const json = await dblpFetchJson(`/search/venue/api?q=${encodeURIComponent(q)}&format=json&h=${limit}`, 'dblp venue');

Type guard

function hasHits(body) { return Array.isArray(body?.result?.hits?.hit) && body.result.hits.hit.length > 0; }

Try / catch

try {
  const venues = await dblpVenueSearch(query);
} catch (err) {
  if (err instanceof EmptyResultError || /No dblp venues matched/.test(err.message)) {
    console.info('No venues matched; try an acronym (e.g. NeurIPS) or a shorter query.');
    return [];
  }
  throw err;
}

Prevention

When it happens

Trigger: GET /search/venue/api?q=<query> returns 200 with result.hits.hit absent or an empty list — the venue name is misspelled, too specific, or dblp has no venue matching it.

Common situations: Misspelled or abbreviated venue names (e.g. 'NeurIPS' vs dblp's 'NeurIPS' variants); searching a workshop or journal dblp indexes under a different name; extremely niche venues not in dblp.

Related errors


AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29). Data as JSON: /api/errors/eaddc98228ca0156. Report an issue: GitHub.