• v1.1.0 b0230e6847

    bwilliams released this 2026-10-22 13:13:36 +01:00 | 0 commits to main since this release

    A general search replaces the web app's Title filter.

    Search

    • One search box for words, phrases and prompts. Words search the title
      and the description; title:, buyer:, buyer_id: and cpv: search
      only their own field. cpv: takes the start of a code (cpv:72) or
      words of a CPV description (cpv:food).
    • "quoted phrases", and ! in front of a term to leave out what it
      matches. Repeats of one prompt match any of them
      (buyer:leeds buyer:bradford); everything else must all match.
    • CPV terms are checked per code: cpv:72 !cpv:7221 needs a code starting
      72 that doesn't start 7221.
    • Words match the start of longer words and other forms of themselves
      ("migr" and "migrating" find "migration"), ignoring case and accents.
      The old filter matched any part of a word ("oad" found "road"); the
      search doesn't.
    • A "?" beside the box explains the syntax, and an unknown prompt is
      pointed out. A saved Title filter carries over as search words.
    • The search runs on the server: GET /api/opportunities/search returns
      the matching UUIDs (see /api/docs).

    Other changes

    • A CPV code is stored once, keeping its longest description: EU Supply
      cuts descriptions to 64 characters, which made a second copy of each
      code it sent.
    • job-search config init leaves out the test sources (fts_mock,
      sleeper) unless given --all.

    Upgrading

    Two new migrations (00010 and 00011): stop the service, migrate, then
    start it again.

    sudo -u job-search job-search --config /etc/job-search/config.yaml migrate up
    

    00011 rebuilds the search index; on a database of about 21,000
    opportunities it took under a second.

    Downloads