Different results when searching from web-app and API

When I’m searching for ‘first note’ in SN web-app the result is one card:

When I’m searching for the same line through the API the results are two cards:

The request:
curl -X POST "https://api.supernotes.app/v1/cards/get/select" -H "accept: application/json" -H "Authorization: <deleted>" -H "Content-Type: application/json" -d "{\"search\":\"first note\"}"

The response:

[
  {
    "id": "108ff42d-fc04-4c87-8c56-89ab8fde3fe5",
    "card": {
      "id": "fa7371a6-fb8c-45be-a61e-8acb95ab726c",
      "name": "first note",
      "markup": "\n\"Форум\" - открытый любительский регби клуб. Мы существуем уже больше десяти лет, но по-прежнему принимаем в свои ряды новых участников (опытных регбистов и абсолютных новичков). Критерий отбора - желание играть в регби, опыт и физические кондиции не так важны: их набрать постепенно. Естественно, мы помогаем новичкам и стараемся научить их всему, что уже умеем сами (правила, тактика, техника, безопасность и т. д.). \n\nЧтобы начать тренироваться с нами, надо просто прийти на любую из тренировок. Одеваться на тренировку следует примерно так же, как для игры в футбол: бутсы/кроссовки, спортивная форма по погоде. Занятия в первые пару недель - бесплатные. За это время вы сможете освоиться и понять, интересны ли вам тренировки. Если решите остаться, вам будет предложено стать полноправным членом клуба \"Форум\" и внести годовой членский взнос.\n\n\n\n\nВзносы игроков и сапортеров идут исключительно на развитие клуба: оплату аренды полей для тренировок и игр, оплату работы судей, покупку необходимого инвентаря и экипировки, а также на выплату заявочных взносов для участия в соревнованиях.\nПеред появлением на тренировке имеет смысл предупредить нас о своем решении, воспользовавшись контактной формой. Если остались вопросы - пишите!\n\n",
      "html": "<p>“Форум” - открытый любительский регби клуб. Мы существуем уже больше десяти лет, но по-прежнему принимаем в свои ряды новых участников (опытных регбистов и абсолютных новичков). Критерий отбора - желание играть в регби, опыт и физические кондиции не так важны: их набрать постепенно. Естественно, мы помогаем новичкам и стараемся научить их всему, что уже умеем сами (правила, тактика, техника, безопасность и т. д.).</p>\n<p>Чтобы начать тренироваться с нами, надо просто прийти на любую из тренировок. Одеваться на тренировку следует примерно так же, как для игры в футбол: бутсы/кроссовки, спортивная форма по погоде. Занятия в первые пару недель - бесплатные. За это время вы сможете освоиться и понять, интересны ли вам тренировки. Если решите остаться, вам будет предложено стать полноправным членом клуба “Форум” и внести годовой членский взнос.</p>\n<p>Взносы игроков и сапортеров идут исключительно на развитие клуба: оплату аренды полей для тренировок и игр, оплату работы судей, покупку необходимого инвентаря и экипировки, а также на выплату заявочных взносов для участия в соревнованиях.<br>\nПеред появлением на тренировке имеет смысл предупредить нас о своем решении, воспользовавшись контактной формой. Если остались вопросы - пишите!</p>\n",
      "icon": null,
      "owner_id": "b2067d38-113c-46ee-9473-71c79f90bfd9",
      "share_code": "<deleted>",
      "frozen": null,
      "created_when": "2020-06-25T11:03:03.100000",
      "modified_when": "2020-06-30T08:24:00.479067",
      "synced_when": "2020-06-30T08:24:00.479067",
      "status": 2,
      "default_perms": 25230431,
      "backlinks": [],
      "tags": [
        "Apple",
        "Bugs",
        "Junktag",
        "Reading"
      ],
      "member_count": 1,
      "likes": 0,
      "comment_count": 0,
      "published_child_count": 2
    },
    "perms": 67108863,
    "color": null,
    "liked": null,
    "created_when": "2020-06-25T11:03:03.100000",
    "modified_when": "2020-06-25T11:03:19.313033",
    "visited_when": "2020-06-25T11:03:19.313040",
    "status": 2,
    "enrolled": true,
    "personal_tags": [],
    "parent_links": [
      {
        "base": {
          "id": "806814fb-02b1-4b7b-be31-db5ec318318f",
          "owner_id": "b2067d38-113c-46ee-9473-71c79f90bfd9",
          "parent_card_id": "8d574da9-35a5-45bc-9a23-86c802cb0f74",
          "child_card_id": "fa7371a6-fb8c-45be-a61e-8acb95ab726c",
          "primary": null,
          "published": true,
          "default_perms": 25230431,
          "created_when": "2020-06-25T22:20:35.787622",
          "modified_when": null
        },
        "parent_id": "ed885cc4-a203-486c-bba1-b41ded664d39",
        "hidden": null,
        "status": 2
      }
    ],
    "is_context": true,
    "has_commented": false,
    "held_published_child_count": 2,
    "held_total_child_count": 2
  },
  {
    "id": "05160438-2059-4fd3-9583-444a7a517202",
    "card": {
      "id": "46c07177-588b-47c7-977e-170d3a71703e",
      "name": "PlugView",
      "markup": "***This is Max for Live device to populate a list of VST/VST3/AU plugins and M4L devices which were used in any Ableton Live session.***\n\nUse this device when you want to parse several livesets trying to find these with (or without) the specific plugins. This is useful when you are switching plugins, changing plugin versions or preparing to share the sets. Livesets are not actually loaded into Ableton Live, PlugView is parsing them 'on the fly', so the process is quite quick.\n\n**Usage:** load Ableton Live session (als-file) of your choice by dropping it into PlugView window or by clicking on a big file chooser button. The list of VST/VST3/AU plugins and M4L devices which were used in this Ableton Live session will be displayed in a grid, sorted and counted. Now you can copy this list to system clipboard for further processing. You don’t need to actually open the live set in Ableton Live to populate the plugins list. Just drop any als file from Ableton Live browser or Finder/Explorer into PlugView window.\n\nI'm pretty sure this is the first M4L device which extensively use Node For Max.  \n\n*PlugView was tested to work in Ableton Live 10/Max 8.0.3 (macOS Mojave/Windows 10). **Note, please, Max 8.0.3 (or later) is required to run PlugView.***\n\n**Short video:** [https://youtu.be/wdl3eepiWCA](https://youtu.be/wdl3eepiWCA) (introduction)\n[https://youtu.be/k06zGXXfClo](https://youtu.be/k06zGXXfClo) (copy plugins list to system clipboard)\n**Price:** $1\n**Purchase:** [https://gum.co/IZnyD](https://gum.co/IZnyD) \n\n``` \nVersion 1.0 (Jan 2019)\n-   Initial release\nVersion 1.1 (March 2019)\n-   Program logic enhancements\n-   Cosmetic changes\nVersion 1.2 (May 2020)\n-   Copy plugins list to system clipboard\n-   Small fixes\nVersion 1.3 (June 2020)\n-   Now PlugView lists AU-plugins correctly\nVersion 1.4 (June 2020)\n-   VST3 plugins are included in the list\n-   Fixed an issue when ‘Default.aupreset’ appears as AU-plugin in he list\n-   Code cleanup\nVersion 1.5 (July 2020)\n-   New option to sort plugins list by their type (AU/VST/VST3/M4L)\n-   Small fixes\n```\n\n[https://gumroad.com/valery\\_kondakoff](https://gumroad.com/valery_kondakoff)",
      "html": "<p><em><strong>This is Max for Live device to populate a list of VST/VST3/AU plugins and M4L devices which were used in any Ableton Live session.</strong></em></p>\n<p>Use this device when you want to parse several livesets trying to find these with (or without) the specific plugins. This is useful when you are switching plugins, changing plugin versions or preparing to share the sets. Livesets are not actually loaded into Ableton Live, PlugView is parsing them ‘on the fly’, so the process is quite quick.</p>\n<p><strong>Usage:</strong> load Ableton Live session (als-file) of your choice by dropping it into PlugView window or by clicking on a big file chooser button. The list of VST/VST3/AU plugins and M4L devices which were used in this Ableton Live session will be displayed in a grid, sorted and counted. Now you can copy this list to system clipboard for further processing. You don’t need to actually open the live set in Ableton Live to populate the plugins list. Just drop any als file from Ableton Live browser or Finder/Explorer into PlugView window.</p>\n<p>I’m pretty sure this is the first M4L device which extensively use Node For Max.</p>\n<p><em>PlugView was tested to work in Ableton Live 10/Max 8.0.3 (macOS Mojave/Windows 10). <strong>Note, please, Max 8.0.3 (or later) is required to run PlugView.</strong></em></p>\n<p><strong>Short video:</strong> <a href=\"https://youtu.be/wdl3eepiWCA\" class=\"external-link\" target=\"_blank\" rel=\"noreferrer noopener\">https://youtu.be/wdl3eepiWCA</a> (introduction)<br>\n<a href=\"https://youtu.be/k06zGXXfClo\" class=\"external-link\" target=\"_blank\" rel=\"noreferrer noopener\">https://youtu.be/k06zGXXfClo</a> (copy plugins list to system clipboard)<br>\n<strong>Price:</strong> $1<br>\n<strong>Purchase:</strong> <a href=\"https://gum.co/IZnyD\" class=\"external-link\" target=\"_blank\" rel=\"noreferrer noopener\">https://gum.co/IZnyD</a></p>\n<pre><code>Version 1.0 (Jan 2019)\n-   Initial release\nVersion 1.1 (March 2019)\n-   Program logic enhancements\n-   Cosmetic changes\nVersion 1.2 (May 2020)\n-   Copy plugins list to system clipboard\n-   Small fixes\nVersion 1.3 (June 2020)\n-   Now PlugView lists AU-plugins correctly\nVersion 1.4 (June 2020)\n-   VST3 plugins are included in the list\n-   Fixed an issue when ‘Default.aupreset’ appears as AU-plugin in he list\n-   Code cleanup\nVersion 1.5 (July 2020)\n-   New option to sort plugins list by their type (AU/VST/VST3/M4L)\n-   Small fixes\n</code></pre>\n<p><a href=\"https://gumroad.com/valery_kondakoff\" class=\"external-link\" target=\"_blank\" rel=\"noreferrer noopener\">https://gumroad.com/valery_kondakoff</a></p>\n",
      "icon": null,
      "owner_id": "b2067d38-113c-46ee-9473-71c79f90bfd9",
      "share_code": "<deleted>",
      "frozen": null,
      "created_when": "2020-06-30T16:54:31.617000",
      "modified_when": "2020-07-02T09:00:29.029096",
      "synced_when": "2020-07-02T09:00:29.029096",
      "status": 2,
      "default_perms": 25230431,
      "backlinks": [],
      "tags": [],
      "member_count": 1,
      "likes": 0,
      "comment_count": 0,
      "published_child_count": 0
    },
    "perms": 67108863,
    "color": null,
    "liked": null,
    "created_when": "2020-06-30T16:54:31.617000",
    "modified_when": "2020-06-30T16:56:19.632353",
    "visited_when": "2020-06-30T16:56:19.632358",
    "status": 2,
    "enrolled": true,
    "personal_tags": [],
    "parent_links": [
      {
        "base": {
          "id": "fd1d2e58-eb98-4981-ab27-d0e0da8ebe76",
          "owner_id": "b2067d38-113c-46ee-9473-71c79f90bfd9",
          "parent_card_id": "682d2eba-2b78-4a03-8308-e7057b1622a7",
          "child_card_id": "46c07177-588b-47c7-977e-170d3a71703e",
          "primary": true,
          "published": true,
          "default_perms": -1,
          "created_when": "2020-06-30T16:56:19.636439",
          "modified_when": null
        },
        "parent_id": "3fa453be-a13b-4062-95c0-2219183736d9",
        "hidden": false,
        "status": 2
      }
    ],
    "is_context": false,
    "has_commented": false,
    "held_published_child_count": 0,
    "held_total_child_count": 0
  }
]

The last card has words ‘first’ and ‘Note’, but they are not near (there is no ‘first note’ sentence there). So, looks like web-app search combines words and API search is searching word by word? Is it intentional?

Yep, search on Supernotes currently happens in the frontend. Search via the API is part of an unreleased feature that currently is not being used in the production environment.