В таком виде оптимально это никак не сделать, только с полным перебором записей каждый божий раз, как предлагает 
0xD34F.
Оптимальнее же сделать можно изменив структуру на: 
{
  "tags": {
    "юр": 2,
    "зозпп": 1,
    "файл": 1,
    "пароль": 1,
    "сервер": 1
  },
  "data": [
    {
      "title": "заголовок 1",
      "content": "запись 1",
      "tags": [
        "юр",
        "зозпп"
      ]
    },
    {
      "title": "заголовок 2",
      "content": "запись 2",
      "tags": [
        "юр"
      ]
    },
    {
      "title": "заголовок 3",
      "content": "запись 3",
      "tags": [
        "файл",
        "пароль",
        "сервер"
      ]
    }
  ]
}
Тогда при добавлении записи просто плюсуете количество использований тэга, при удалении минусуете. Если стало 
0 - удаляете.
Хотя, конечно, если всё это на простых файликах и всё равно грузится в память - смысла слишком оптимизировать тут никакого нет.:)