設置コード

検索機能をサイトに設置する方法を説明します。

設置コードの種類

検索機能をサイトに設置するには、検索結果ページと検索フォームの2つのコードを設置する必要があります。設置方法については、ダッシュボードの手順をご確認ください。

  • 検索結果ページ: 実際の検索結果を表示するページです。search.htmlなどの名前で単体のHTMLファイルとして設置します。
  • 検索フォーム: 検索フォームは、シンプルな入力フォームとサジェスト機能から構成されています。Webサイトの共通ヘッダーなどに、全ページに組み込む形で設置してください。

検索結果の設定オプション

検索結果ページのコード内に、neodig-search-config というクラスを持つ <script> タグがあります。この中のJSON設定を変更することで、検索結果の表示内容をカスタマイズできます。

SPAフレームワーク(Vue.js、React等)で利用する場合は、<script> タグの代わりに <div hidden> を使用することもできます。

おすすめコンテンツの設定

"recommend": {
  "maxSize": 3,
  "messages": {
    "header": "おすすめコンテンツ"
  }
}
  • maxSize: 表示する最大件数(デフォルト: 3)
  • messages: 各種メッセージのカスタマイズ

検索結果の設定

"result": {
  "size": 10,
  "scoreThreshold": 0.7,
  "enableMarkdown": true,
  "lastModifiedDateFormat": "yyyy/MM/dd",
  "messages": {
    "header": "検索結果",
    "notFound": "検索結果が見つかりませんでした",
    "showNext": "さらに表示",
    "limitReached": "検索結果の表示上限に達しました。検索キーワードを変えて検索して下さい",
    "expandDetails": "続きを表示",
    "collapse": "折りたたむ",
    "scrollTop": "",
    "error": "エラーが発生しました。時間を空けて再度お試しください。",
    "rateLimitError": "リクエストが多すぎます。しばらく待ってから再度お試しください"
  }
}
  • size: 1ページあたりの表示件数(デフォルト: 10)
  • scoreThreshold: 検索結果初期表示のスコア閾値(デフォルト: 0.7)。
  • enableMarkdown: Markdown形式のサマリーを有効にするか(デフォルト: true)
  • lastModifiedDateFormat: 最終更新日時の表示フォーマット(デフォルト: "yyyy/MM/dd")
  • messages: 各種メッセージのカスタマイズ
    • expandDetails: サマリー展開ボタンのテキスト(デフォルト: "続きを表示")
    • collapse: サマリー折りたたみボタンのテキスト(デフォルト: "折りたたむ")
    • scrollTop: トップへスクロールボタンのテキスト(空文字列の場合はボタンを非表示)
    • error: エラー発生時のメッセージ(デフォルト: "エラーが発生しました。時間を空けて再度お試しください。")
    • rateLimitError: レート制限時のメッセージ(デフォルト: "リクエストが多すぎます。しばらく待ってから再度お試しください")

結果ページのデザインカスタマイズ

検索結果の表示内容・表示順序の変更

検索結果ページでは、<template> 要素を使用して、おすすめコンテンツと検索結果の表示レイアウトをカスタマイズできます。

SPAフレームワーク(Vue.js、React等)で利用する場合は、<template> タグの代わりに <div hidden> を使用することもできます。

テンプレートの種類

検索結果ページには2種類のテンプレートが用意されています。

  • おすすめコンテンツテンプレート (.neodig-recommendation-template): おすすめコンテンツの表示形式
  • 検索結果テンプレート (.neodig-result-template): 検索結果の表示形式

利用可能な表示要素

各テンプレート内で使用できる要素を以下のクラス名で指定します。これらのクラスを持つ要素に、自動的にデータが挿入されます。

おすすめコンテンツテンプレート
クラス名説明
.neodig-recommendation-titleタイトル
.neodig-recommendation-imageサムネイル画像
.neodig-recommendation-url表示用URL
.neodig-recommendation-summary要約文
検索結果テンプレート
クラス名説明
.neodig-result-titleタイトル
.neodig-result-imageサムネイル画像
.neodig-result-url表示用URL
.neodig-result-summary要約文
.neodig-result-last-modified最終更新日時 (デフォルト非表示)
.neodig-result-generic-field1汎用フィールド1 (デフォルト非表示)
.neodig-result-generic-field2汎用フィールド2 (デフォルト非表示)
.neodig-result-generic-field3汎用フィールド3 (デフォルト非表示)
.neodig-result-category-tagsカテゴリタグ一覧 (デフォルト非表示)

カスタマイズの自由度

テンプレートを編集することで、以下のようなカスタマイズが可能です。

  • 表示要素の選択: 不要な要素のクラスを削除することで、その情報を非表示にできます
  • 表示順序の変更: タイトル、画像、要約などの表示順序を自由に変更できます
  • HTML構造の調整: 独自のラッパー要素やグリッドレイアウトを追加して、サイトのデザインに合わせた構造を構築できます

注意事項

  • 表示したい情報のクラス名を持つ要素を必ずテンプレート内に含めてください
  • クラス名は正確に指定する必要があります(スペルミスがあるとデータが挿入されません)
  • テンプレート全体のHTML構造は自由ですが、データ挿入用のクラス名を持つ要素は必須です

検索結果のCSS変更

サンプルCSSは参考として提供されています。実際のデザインは、お客様のサイト側のCSSで自由にカスタマイズしてください。

検索フォームのCSSクラス

CSSクラス名説明
.neodig-form-rootフォームのルート要素(サジェスト専用フォームで使用)
.neodig-search-root検索ルート要素
.neodig-search-wrapper検索入力とボタンのラッパー
.neodig-search-input検索入力フィールド
.neodig-search-button検索ボタン
.neodig-loadingローディング中の修飾クラス(検索ボタン・もっと見るボタンにプログレスサークルを表示)
.neodig-suggest-containerサジェストコンテナ
.neodig-suggest-itemサジェストアイテム
.neodig-suggest-item-hoverサジェストアイテムのホバー状態
.neodig-suggest-item-selectedサジェストアイテムの選択状態
.neodig-filter-barカテゴリと更新日時フィルタのラッパー
.neodig-categoriesカテゴリコンテナ
.neodig-category個別カテゴリ
.neodig-category-nameカテゴリ名
.neodig-category-itemsカテゴリアイテムのコンテナ
.neodig-category-items-wrapperカテゴリアイテムのラッパー
.neodig-category-item個別カテゴリアイテム
.neodig-category-item-labelカテゴリアイテムのラベル
.neodig-category-inputカテゴリの入力要素(チェックボックス、ラジオボタン)
.neodig-category-dropdownドロップダウン形式のカテゴリ
.neodig-freshness更新日時フィルタコンテナ
.neodig-freshness-label更新日時フィルタのラベル
.neodig-freshness-dropdown更新日時フィルタのドロップダウン

音声入力のCSSクラス

対応ブラウザ(Chrome、Edge)では、検索入力フィールド内に音声入力ボタンが自動的に表示されます。Firefox等の非対応ブラウザやiOS端末ではボタンは表示されません。音声入力ボタンが表示されない場合は、トラブルシューティングをご確認ください。

CSSクラス名説明
.neodig-search-input-container音声入力ボタン付き検索入力のラッパー(自動生成)
.neodig-search-input-with-voice音声入力ボタン用にパディングが調整された検索入力
.neodig-voice-button音声入力ボタン
.neodig-voice-active録音中の音声入力ボタン

検索結果のCSSクラス

CSSクラス名説明
.neodig-result-contents結果コンテンツのコンテナ
.neodig-recommendations-sectionおすすめコンテンツセクション
.neodig-recommendations-headerおすすめコンテンツヘッダー
.neodig-recommendations-itemsおすすめコンテンツアイテムのコンテナ
.neodig-recommendation-item個別おすすめコンテンツアイテム
.neodig-recommendation-titleおすすめコンテンツのタイトル
.neodig-recommendation-contentおすすめコンテンツのコンテンツ
.neodig-recommendation-imageおすすめコンテンツの画像
.neodig-recommendation-textおすすめコンテンツのテキスト部分
.neodig-recommendation-urlおすすめコンテンツのURL
.neodig-recommendation-summaryおすすめコンテンツのサマリー
.neodig-results-section検索結果セクション
.neodig-results-header検索結果ヘッダー
.neodig-results-items検索結果アイテムのコンテナ
.neodig-result-item個別検索結果アイテム
.neodig-result-title検索結果のタイトル
.neodig-result-content検索結果のコンテンツ
.neodig-result-image検索結果の画像
.neodig-result-text検索結果のテキスト部分
.neodig-result-url検索結果のURL
.neodig-result-summary検索結果のサマリー
.neodig-result-last-modified最終更新日時
.neodig-result-generic-field1汎用フィールド1
.neodig-result-generic-field2汎用フィールド2
.neodig-result-generic-field3汎用フィールド3
.neodig-result-category-tagsカテゴリタグ一覧
.neodig-category-tag個別カテゴリタグ
.neodig-summary-expandable展開可能なサマリーのコンテナ
.neodig-summary-contentサマリーコンテンツ(line-clamp方式)
.neodig-summary-toggle-buttonサマリー展開/折りたたみボタン
.neodig-errorエラーメッセージ表示エリア
.neodig-next-area次へボタンのエリア
.neodig-more-buttonもっと見るボタン
.neodig-limit-message表示上限到達時のメッセージ
.neodig-scroll-top-areaトップへスクロールボタンのエリア
.neodig-scroll-top-buttonトップへスクロールボタン
.neodig-with-chat-buttonチャットボタン併用時の修飾クラス
.neodig-skeleton-containerスケルトンスクリーンのコンテナ(ローディング中に表示)
.neodig-skeleton-itemスケルトンスクリーンの個別アイテム
.neodig-skeleton-titleスケルトンのタイトルプレースホルダー
.neodig-skeleton-urlスケルトンのURLプレースホルダー
.neodig-skeleton-textスケルトンのテキストプレースホルダー
.neodig-skeleton-text-shortスケルトンの短いテキストプレースホルダー

トラブルシューティング

音声入力ボタンが表示されない

音声入力ボタンが表示されない場合、以下の点を確認してください。

1. ブラウザの対応状況

音声入力は Web Speech API に対応したブラウザ(Chrome、Edge)でのみ利用可能です。Firefox等の非対応ブラウザではボタンは表示されません。また、iOSでは全てのブラウザがWebKitエンジンを使用しており、Web Speech APIが正常に動作しないためボタンは表示されません。

2. HTTPS の使用

音声入力にはHTTPS接続が必要です(localhost を除く)。HTTP環境では音声入力は利用できません。

3. Permissions-Policy ヘッダーの確認

サーバーの Permissions-Policy HTTPレスポンスヘッダーで microphone がブロックされていると、音声入力ボタンは自動的に非表示になります。ブラウザのDevToolsコンソールに以下のメッセージが表示されている場合、この設定が原因です。

Voice input button is hidden because microphone access is blocked. Please check that the Permissions-Policy header allows microphone.

対処方法: サーバーの Permissions-Policy ヘッダーで microphone を許可してください。

Permissions-Policy: microphone=(self)
WAFやCDN、セキュリティモジュール(例: helmet、nuxt-security)がデフォルトで microphone=() を設定している場合があります。ご利用のサーバー設定をご確認ください。