Search API

すべてのスキルを対象とした全文検索です。

スキル検索

GET /api/v1/skills/search

パラメータ

| パラメータ | タイプ | 説明 | |-----------|------|-------------| | q | string | 検索クエリ(必須) | | page | number | ページ番号(デフォルト:1) | | limit | number | 1ページあたりの項目数(デフォルト:20) | | category | string | カテゴリでフィルター | | platform | string | プラットフォームでフィルター | | minStars | number | 最小スター数 | | hasIndex | boolean | marketplace.jsonの有無 |

リクエスト例

bash
curl "https://skillsmp.com/api/v1/skills/search?q=react+typescript&category=frontend&minStars=100"

レスポンス例

json
{
  "data": [
    {
      "id": "456",
      "owner": "community",
      "repo": "react-typescript-guide",
      "name": "React TypeScript Guide",
      "description": "Type-safe React development patterns",
      "stars": 890,
      "score": 15.7,
      "highlights": {
        "name": "<mark>React</mark> <mark>TypeScript</mark> Guide",
        "description": "Type-safe <mark>React</mark> development patterns"
      }
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 45,
    "totalPages": 3
  },
  "meta": {
    "query": "react typescript",
    "took": 23
  }
}

検索構文

基本検索

react components

すべてのテキストフィールドでこれらの用語を検索します。

完全一致フレーズ

"react hooks"

完全なフレーズに一致します。

フィールド指定

name:react description:hooks

特定のフィールドを検索します。

除外

react -class

マイナスで用語を除外します。

ワイルドカード

react*

前方一致検索。

検索のヒント

効果的なクエリ

良い例:

  • react hooks state management - 具体的な用語
  • "code review" security - フレーズ + 用語
  • typescript name:react - フィールド指定

効果が低い例:

  • the best react skill - ストップワードは無視される
  • r - 短すぎる
  • * - 広すぎる

関連性スコアリング

結果は以下でランク付けされます:

  1. 完全一致 - 完全な用語一致
  2. フィールドの重み - 名前 > 説明 > コンテンツ
  3. 人気度 - スター数のブースト
  4. 鮮度 - 最近の更新のブースト

オートコンプリート

GET /api/v1/skills/autocomplete

パラメータ

| パラメータ | タイプ | 説明 | |-----------|------|-------------| | q | string | 部分クエリ | | limit | number | 最大候補数(デフォルト:5) |

リクエスト例

bash
curl "https://skillsmp.com/api/v1/skills/autocomplete?q=rea"

レスポンス例

json
{
  "data": [
    {
      "text": "react",
      "count": 89
    },
    {
      "text": "react hooks",
      "count": 34
    },
    {
      "text": "react typescript",
      "count": 28
    }
  ]
}

エラーハンドリング

| コード | 説明 | |------|-------------| | INVALID_QUERY | クエリが空または短すぎる | | QUERY_TOO_LONG | クエリが200文字を超えている | | INVALID_SYNTAX | 検索構文が不正 |