jpskill.com
💬 コミュニケーション コミュニティ

search-engine-setup

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.

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o search-engine-setup.zip https://jpskill.com/download/15366.zip && unzip -o search-engine-setup.zip && rm search-engine-setup.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/15366.zip -OutFile "$d\search-engine-setup.zip"; Expand-Archive "$d\search-engine-setup.zip" -DestinationPath $d -Force; ri "$d\search-engine-setup.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して search-engine-setup.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → search-engine-setup フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1
📖 Claude が読む原文 SKILL.md(中身を展開)

この本文は AI(Claude)が読むための原文(英語または中国語)です。日本語訳は順次追加中。

Search Engine Setup

Overview

This skill helps AI agents implement production-quality search in applications. It covers index design with custom analyzers, database-to-index sync pipelines, search APIs with faceting and highlights, autocomplete, and relevance tuning based on real query data.

Instructions

Index Design (Elasticsearch)

  1. Map source database columns to Elasticsearch field types:

    • Text columns users search → text with custom analyzer
    • Enum/category columns for filtering → keyword
    • Numeric columns for range filters → integer, float
    • Boolean flags → boolean
    • Dates → date
    • Fields for autocomplete → completion
  2. Custom analyzer template for product/content search:

    {
      "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. Boost fields by search importance: title/name (3-5x), tags (2x), description (1x).

  4. Always add a suggest field of type completion for typeahead.

Index Design (Algolia)

  1. Set searchableAttributes in priority order: ["name", "category", "description"].
  2. Set attributesForFaceting: prefix filterable attributes with filterOnly() for non-displayed facets.
  3. Configure customRanking: ["desc(popularity)", "desc(rating)"].
  4. Enable typo tolerance (on by default) and set minWordSizefor1Typo: 3.

Sync Pipeline

  1. Full re-index: On first run or manual trigger, paginate through all source records (1000 per batch), transform to index documents, bulk insert.
  2. Incremental sync: Poll updated_at > last_sync_time every 10 seconds, or use database triggers/CDC.
  3. Deletions: Track soft-deleted records. Remove from index when detected.
  4. Idempotency: Use source record ID as document ID. Upsert, never blind insert.
  5. Error handling: Log failed documents, continue batch. Retry failures in next cycle.

Search API

Build an endpoint that accepts:

  • q — full-text query string
  • Filter params — category, brand, min_price, max_price, rating, in_stock
  • sortrelevance (default), price_asc, price_desc, newest, rating
  • page / per_page or cursor-based pagination

Query construction (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 }
    ]}}
  }
}

Autocomplete

  1. Use completion suggester for prefix-based typeahead (fastest).
  2. Return top 5 suggestions with category context.
  3. Add "did you mean" using phrase suggester for low-result queries.

Relevance Tuning

Analyze search logs to improve quality:

  1. Zero-result queries: Check for misspellings → add synonyms. Check for missing data → flag content gaps.
  2. Low CTR queries: Top results don't match intent → adjust boost weights or add synonyms.
  3. Position bias: If users consistently click result #3+, the ranking formula needs tuning.
  4. Apply changes iteratively: synonyms first, then boost adjustments, then custom scoring.

Examples

Example 1 — Blog search index

Input: "Set up search for a blog with 10K articles."

Output:

{
  "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" }] }
    }
  }
}

Example 2 — Algolia configuration for an e-commerce store

Input: "Configure Algolia for a store with products."

Output:

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'],
});

Guidelines

  • Start with Elasticsearch for control, Algolia for speed-to-market. Elasticsearch gives full tuning power; Algolia is faster to set up but costs more at scale.
  • Never search the primary database. Always sync to a dedicated search index. SQL LIKE does not scale.
  • Fuzziness AUTO is almost always correct. It allows 1 typo for 3-5 char words and 2 typos for 6+ chars.
  • Synonyms are the highest-ROI tuning. Most zero-result queries are fixed by adding 10-20 synonym pairs.
  • Monitor query performance. Set an alert if p95 search latency exceeds 200ms.