Agent Skills by ALSEL
汎用ソフトウェア開発⭐ リポ 47品質スコア 86/100

search-engine-setup

アプリケーション向けの検索エンジンをセットアップして最適化します。「アプリに検索機能を追加したい」「Elasticsearchを導入したい」「Algoliaを設定したい」「検索精度を改善したい」「オートコンプリート機能を追加したい」「あいまい検索を実装したい」「ファセット検索を実装したい」といったご依頼の際にご利用ください。インデックス設計、データ同期、Search API、オートコンプリート、検索精度の調整、クエリ分析に対応しています。

description の原文を見る

Set up and optimize search engines for applications. Use when someone asks to "add search to my app", "set up Elasticsearch", "configure Algolia", "fix search relevance", "add autocomplete", "fuzzy search", or "faceted filtering". Covers index design, data sync, search API, autocomplete, relevance tuning, and query analysis.

SKILL.md 本文

検索エンジン設定

概要

このスキルは、AIエージェントがアプリケーションに本番環境対応の検索機能を実装するのを支援します。カスタムアナライザーを備えたインデックス設計、データベース-インデックス同期パイプライン、ファセティングとハイライト機能を備えた検索API、オートコンプリート、および実際のクエリデータに基づく関連性チューニングに対応しています。

手順

インデックス設計(Elasticsearch)

  1. ソースデータベースの列をElasticsearchのフィールドタイプにマッピングします:

    • ユーザーが検索するテキスト列 → カスタムアナライザー付きの text
    • フィルタリング用の列挙型・カテゴリ列 → keyword
    • 範囲フィルター用の数値列 → integerfloat
    • ブール値フラグ → boolean
    • 日付 → date
    • オートコンプリート用フィールド → completion
  2. 商品・コンテンツ検索用のカスタムアナライザーテンプレート:

    {
      "analyzer": {
        "content_analyzer": {
          "tokenizer": "standard",
          "filter": ["lowercase", "synonym_filter", "edge_ngram_filter"]
        }
      },
      "filter": {
        "synonym_filter": { "type": "synonym", "synonyms_path": "synonyms.txt" },
        "edge_ngram_filter": { "type": "edge_ngram", "min_gram": 3, "max_gram": 15 }
      }
    }
    
  3. 検索の重要度に応じてフィールドにブーストを設定します:タイトル・名前(3~5倍)、タグ(2倍)、説明(1倍)。

  4. 常に型 completionsuggest フィールドをタイプアヘッド用に追加してください。

インデックス設計(Algolia)

  1. 優先順序で searchableAttributes を設定します:["name", "category", "description"]
  2. attributesForFaceting を設定します:表示しないファセット用の属性には filterOnly() をプレフィックスします。
  3. customRanking を設定します:["desc(popularity)", "desc(rating)"]
  4. タイプミス許容機能を有効にし(デフォルトで有効)、minWordSizefor1Typo: 3 を設定します。

同期パイプライン

  1. フル再インデックス:初回実行またはマニュアルトリガー時に、すべてのソースレコードをページネーション処理し(バッチあたり1000件)、インデックスドキュメントに変換して、一括挿入します。
  2. 増分同期updated_at > last_sync_time を10秒ごとにポーリングするか、データベーストリガー・CDCを使用します。
  3. 削除処理:ソフトデリートされたレコードを追跡します。検出時にインデックスから削除します。
  4. べき等性:ソースレコードIDをドキュメントIDとして使用します。盲目的な挿入ではなく、常にアップサートを実行します。
  5. エラーハンドリング:失敗したドキュメントをログに記録し、バッチを継続します。次のサイクルで失敗を再試行します。

検索API

以下を受け入れるエンドポイントを構築します:

  • q — フルテキストクエリ文字列
  • フィルターパラメーター — categorybrandmin_pricemax_priceratingin_stock
  • sortrelevance(デフォルト)、price_ascprice_descnewestrating
  • page / per_page またはカーソルベースのページネーション

クエリ構築(Elasticsearch):

{
  "query": {
    "bool": {
      "must": [{ "multi_match": { "query": "q", "fields": ["name^5", "description"], "fuzziness": "AUTO" }}],
      "filter": [
        { "term": { "category": "electronics" }},
        { "range": { "price_cents": { "gte": 2000, "lte": 10000 }}},
        { "term": { "in_stock": true }}
      ],
      "should": [{ "term": { "in_stock": { "value": true, "boost": 2 }}}]
    }
  },
  "highlight": { "fields": { "name": {}, "description": {} }},
  "aggs": {
    "categories": { "terms": { "field": "category", "size": 20 }},
    "brands":     { "terms": { "field": "brand", "size": 20 }},
    "price_ranges": { "range": { "field": "price_cents", "ranges": [
      { "to": 2500 }, { "from": 2500, "to": 10000 }, { "from": 10000 }
    ]}}
  }
}

オートコンプリート

  1. プレフィックスベースのタイプアヘッド(最速)にはコンプリーション推奨機能を使用します。
  2. カテゴリーコンテキスト付きの上位5つの候補を返します。
  3. 低結果クエリーの場合は、フレーズ推奨機能を使用して「もしかして」機能を追加します。

関連性チューニング

検索ログを分析して品質を向上させます:

  1. ゼロ結果クエリー:スペルミスを確認 → 同義語を追加します。データ欠落を確認 → コンテンツギャップにフラグを付けます。
  2. 低クリック率クエリー:トップ結果が意図と一致しない → ブースト重みを調整するか、同義語を追加します。
  3. 位置バイアス:ユーザーが一貫して結果#3以降をクリックしている場合 → ランキング公式を調整する必要があります。
  4. 段階的に変更を適用します:最初に同義語、次にブースト調整、その後にカスタムスコアリング。

例1 — ブログ検索インデックス

入力: "10Kの記事を持つブログ用の検索を設定してください。"

出力:

{
  "mappings": {
    "properties": {
      "title":        { "type": "text", "analyzer": "content_analyzer", "boost": 5.0 },
      "body":         { "type": "text", "analyzer": "content_analyzer" },
      "author":       { "type": "keyword" },
      "tags":         { "type": "keyword" },
      "published_at": { "type": "date" },
      "suggest":      { "type": "completion", "contexts": [{ "name": "tag", "type": "category" }] }
    }
  }
}

例2 — e-commerceストア用のAlgolia設定

入力: "商品を扱うストア向けにAlgoliaを設定してください。"

出力:

index.setSettings({
  searchableAttributes: ['name', 'brand', 'category', 'description'],
  attributesForFaceting: ['category', 'brand', 'filterOnly(price_cents)', 'rating'],
  customRanking: ['desc(sales_count)', 'desc(rating)'],
  typoTolerance: true,
  minWordSizefor1Typo: 3,
  minWordSizefor2Typos: 6,
  hitsPerPage: 20,
  snippetEllipsisText: '…',
  attributesToSnippet: ['description:30'],
});

ガイドライン

  • 制御にはElasticsearchを、市場投入の速さにはAlgoliaを選択します。 Elasticsearchは完全なチューニング機能を提供し、Algoliaはセットアップが高速ですがスケール時のコストが高くなります。
  • プライマリデータベースで検索しないでください。 常に専用の検索インデックスに同期してください。SQLの LIKE はスケールしません。
  • Fuzziness AUTOはほぼ常に正しい選択です。 3~5文字の単語に対して1つのタイプミス、6文字以上の単語に対して2つのタイプミスを許可します。
  • 同義語が最も高いROIを持つチューニングです。 ほとんどのゼロ結果クエリーは、10~20個の同義語ペアを追加することで解決されます。
  • クエリーのパフォーマンスを監視してください。 p95検索レイテンシーが200msを超える場合は、アラートを設定します。

ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
TerminalSkills
リポジトリ
TerminalSkills/skills
ライセンス
Apache-2.0
最終更新
2026/5/4

Source: https://github.com/TerminalSkills/skills / ライセンス: Apache-2.0

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: TerminalSkills · TerminalSkills/skills · ライセンス: Apache-2.0