Search API Solr

Search APIモジュールにApache Solrバックエンドを提供し、ファセット、ハイライト、オートコンプリート、多言語サポートなどの高度な機能を備えた強力な全文検索機能を実現します。

search_api_solr
54,611 sites
127
drupal.org

インストール

Drupal 11, 10 v4.3.10
composer require 'drupal/search_api_solr:^4.3'

概要

Search API Solrは、DrupalのSearch APIとApache Solr検索サーバーを接続する包括的な統合モジュールです。Solrの強力な全文検索機能を使用してDrupalコンテンツをインデックス作成・検索するための堅牢なバックエンド実装を提供します。

このモジュールは、単一サーバー構成とSolr Cloudクラスタを含むさまざまなSolrデプロイメントモードをサポートしています。Drupalセットアップに合わせたSolr設定ファイル(schema.xml、solrconfig.xml)を自動生成し、フィールドタイプ、キャッシュ、リクエストハンドラ、リクエストディスパッチャの設定エンティティによる幅広いカスタマイズをサポートします。

主な機能には、言語固有のフィールドタイプによる多言語検索、検索結果のハイライト、ファセット検索統合、オートコンプリート提案、スペルチェック機能、More Like This推奨、高度なクエリ用のストリーミング式、マルチサイトインデックス作成サポートが含まれます。

Features

  • 単一サーバーとSolr Cloudデプロイメントの両方をサポートするApache SolrサーバーのSearch APIバックエンドプラグインを実装
  • さまざまな認証およびデプロイメントシナリオに対応する4つのコネクタタイプを提供:Standard、Basic Auth、Solr Cloud、Solr Cloud with Basic Auth
  • schema.xml、solrconfig.xml、言語固有のフィールドタイプを含むDrupal専用Solr設定ファイル(config.zip)の自動生成
  • 50以上の言語に対応する言語固有のフィールドタイプとアナライザによる多言語検索サポート
  • より良いパフォーマンスと精度のためにSolrから直接ハイライトされたスニペットを取得するハイライトプロセッサ統合
  • Facetsモジュールを通じたファセット検索統合(階層ファセットと日付範囲をサポート)
  • 3つの提案モードを持つオートコンプリート機能:Terms、Spellcheck、Suggester(search_api_solr_autocompleteサブモジュール経由)
  • ドキュメントの類似性に基づいて関連コンテンツを見つけるMore Like This(MLT)サポート
  • 検索体験向上のためのスペルチェックとクエリ提案機能
  • Solr Cloud環境での複雑な分析クエリ用のストリーミング式サポート
  • 複数のDrupalサイトが単一のSolrインデックスを共有できるマルチサイトインデックス作成サポート
  • 設定エンティティとして構成可能なSolrフィールドタイプ、キャッシュ、リクエストハンドラ、リクエストディスパッチャ
  • 検索前にインデックス済みドキュメントに後処理を適用するためのインデックスファイナライゼーションフック
  • 高速なコンテンツ処理のための並列インデックス作成サポート(Drushコマンド経由)
  • クエリ構築、ドキュメントインデックス作成、結果処理をカスタマイズするための包括的なイベントシステム
  • configsetのアップロード、core/collectionのリロード、フィールド分析のための管理サブモジュール

Use Cases

エンタープライズコンテンツ検索

数千のコンテンツアイテムを持つエンタープライズWebサイト向けの強力なサイト全体検索を実装します。Solrの効率的なインデックス作成とクエリ機能を使用して、コンテンツタイプ、日付、著者、タクソノミーターム、カスタムフィールドでフィルタリングするファセットナビゲーション付きの1秒未満の検索結果を提供します。

多言語Webサイト検索

多言語Drupalサイト向けの言語固有検索を設定します。Search API Solrは50以上の言語に対して適切なステミング、ストップワード、アナライザを持つ言語固有のフィールドタイプを提供し、ユーザーが言語に適したテキスト分析で自分の言語のコンテンツを見つけられるようにします。

ECサイト商品検索

ファセットフィルタリング、価格範囲ファセット、属性フィルター、関連性チューニングを備えた包括的な商品検索を構築します。Solrのブースト機能を使用して注目商品をプロモートし、人気度、新しさ、またはカスタムビジネスルールに基づいて関連性を調整します。

入力中検索オートコンプリート

search_api_solr_autocompleteサブモジュールを使用してレスポンシブなオートコンプリート提案を実装します。高速な前方一致のための用語ベース提案、タイプミス修正のためのスペルチェック提案、またはコンテキストを考慮した補完のためのSolrのサジェスタを設定します。

マルチサイト統合検索

単一のSolrインデックスを共有する複数のDrupalサイトにわたる統合検索を作成します。ユーザーはすべてのサイトのコンテンツを同時に検索したり、マルチサイトドキュメントデータソースとサイトハッシュフィルタリングを使用して特定のサイトにフィルタリングしたりできます。

高可用性検索クラスタ

Solr Cloudを使用してフォールトトレラントな検索インフラストラクチャをデプロイします。水平スケーリングのための複数のシャードと高可用性のためのレプリケーションを設定します。adminサブモジュールを使用してDrupalからconfigsetとcollectionを直接管理します。

ドキュメントリポジトリ検索

Search API Attachmentsと統合して検索可能なドキュメントリポジトリを構築します。SolrはApache Tikaを使用してPDF、Wordドキュメント、その他のファイル形式からテキストを抽出し、ドキュメントコンテンツを完全に検索可能にします。

関連コンテンツ推奨

SolrのMore Like This(MLT)機能を使用して関連コンテンツブロックを表示します。インデックス設定でMLTパラメータを設定し、共有する用語、タクソノミー、またはカスタム類似性基準に基づいて類似の記事を見つけます。

Tips

  • 本番デプロイメントにはSolr Cloudモードを使用してください - より良いスケーラビリティ、フォールトトレランス、configsetによる簡単な設定管理を提供します。
  • Solr CloudデプロイメントではDrupal管理UIから直接configsetを管理するためにsearch_api_solr_adminサブモジュールを有効にしてください。
  • トークン化とステミングを実行するSearch APIプロセッサを無効にしてください - Solrは言語固有のアナライザを通じてこれらをより良く処理します。
  • HTMLフィルターとハイライトプロセッサは有効のままにしてください - Solrのハイライト機能とうまく連携します。
  • インデックス作成時にアクセス制御が処理される場合、Viewsで「Solrから結果データを取得」と「アイテムアクセスチェックをスキップ」を使用してパフォーマンスを向上させてください。
  • Drupalインストールに新しい言語やカスタムフィールドタイプを追加するたびに新しいconfig.zipを生成して再デプロイしてください。
  • adminサブモジュールのフィールド分析ツールを使用して、テキストがさまざまなフィールドタイプでどのようにトークン化・分析されるかを理解してください。
  • 開発環境では、クイックSolrセットアップのためにモジュールに含まれるジャンプスタートdocker-composeファイルを使用してください。
  • 「solr_param_」プレフィックスを使用してSearch APIクエリでSolrパラメータを直接設定できます。例:`$query->setOption('solr_param_mm', '75%')`
  • Solr Cloudで複雑な分析クエリにはストリーミング式を使用してください - 結合、集約、機械学習統合などの操作が可能になります。

Technical Details

Admin Pages 12
Solrサーバー設定 /admin/config/search/search-api/server/{server_id}

コネクタタイプ、接続パラメータ、詳細オプションを含むSolrバックエンド設定を構成します。生成されたSolr設定ファイルのダウンロードへのアクセスも提供します。

Solr設定ファイル /admin/config/search/search-api/server/{server_id}/files

このサーバー用に生成された個別のSolr設定ファイルを表示およびダウンロードします。特定のXML設定ファイルまたは完全なconfig.zipをダウンロードするためのアクセスを提供します。

Solrフィールドタイプ設定 /admin/config/search/search-api/server/{server_id}/solr_field_type

このサーバーで使用するカスタムSolrフィールドタイプを管理します。フィールドタイプは、言語固有の設定を含め、テキストがどのように分析およびインデックス化されるかを定義します。

Solrキャッシュ設定 /admin/config/search/search-api/server/{server_id}/solr_cache

最適な検索パフォーマンスのためのクエリ結果キャッシュ、フィルターキャッシュ、ドキュメントキャッシュを含むSolrキャッシュ設定を構成します。

Solrリクエストハンドラ設定 /admin/config/search/search-api/server/{server_id}/solr_request_handler

さまざまなタイプの検索リクエストの処理方法を定義するSolrリクエストハンドラを管理します(select、suggest、mlt、spellなど)。

Solrリクエストディスパッチャ設定 /admin/config/search/search-api/server/{server_id}/solr_request_dispatcher

HTTPリクエスト処理とキャッシュヘッダーを処理するSolrリクエストディスパッチャを設定します。

Configsetをアップロード /admin/config/search/search-api/server/{server_id}/solr-admin/upload-configset

生成されたSolr configsetをSolr Cloudクラスタに直接アップロードします。新しいコレクションの場合、シャーディングとレプリケーション設定も指定できます。

Coreをリロード /admin/config/search/search-api/server/{server_id}/solr-admin/reload-core

Solrサーバーにcore設定のリロードを強制します。設定ファイルを手動で更新した後に使用します。

Collectionをリロード /admin/config/search/search-api/server/{server_id}/solr-admin/reload-collection

Solr Cloudサーバーにすべてのノードでcollection設定のリロードを強制します。

Collectionを削除 /admin/config/search/search-api/server/{server_id}/solr-admin/delete-collection

Solr Cloud collectionを削除します。警告:これはcollectionとすべてのインデックス済みデータを完全に削除します。

Solrフィールド分析 /admin/config/search/search-api/server/{server_id}/solr-admin/field-analysis

さまざまなSolrフィールドタイプでテキストがどのように分析されるかをテストします。検索動作のデバッグやトークン化、ステミング、フィルタリングの理解に役立ちます。

Search APIインデックス - Solr固有オプション /admin/config/search/search-api/index/{index_id}

ファイナライゼーション、ハイライト、More Like This、多言語オプションを含むSearch APIインデックスのSolr固有設定を構成します。

権限 2
Solr管理タスクを実行

configsetのアップロード、core/collectionのリロード、collectionの削除などのSolr管理タスクを実行するアクセス権限。

フィールド分析を実行

テキストがどのようにトークン化・分析されるかをテストするSolrフィールド分析を実行するアクセス権限。

Hooks 7
hook_search_api_solr_query_alter

4.2.0で非推奨。代わりにPreQueryEventを使用してください。実行前にSolariumクエリを変更できます。

hook_search_api_solr_converted_query_alter

4.2.0で非推奨。代わりにPostConvertedQueryEventを使用してください。Solr式への変換後にクエリを変更できます。

hook_search_api_solr_field_mapping_alter

4.2.0で非推奨。代わりにPostFieldMappingEventを使用してください。フィールド名マッピングを変更できます。

hook_search_api_solr_documents_alter

4.2.0で非推奨。代わりにPostCreateIndexDocumentsEventを使用してください。インデックス作成前にSolrドキュメントを変更できます。

hook_search_api_solr_search_results_alter

4.2.0で非推奨。代わりにPostExtractResultsEventを使用してください。Solrから返された検索結果を変更できます。

hook_search_api_solr_finalize_index

4.2.0で非推奨。代わりにPreIndexFinalizationEventを使用してください。最初の検索前にファイナライゼーションコマンドを適用します。

hook_search_api_solr_config_files_alter

4.2.0で非推奨。代わりにPostConfigFilesGenerationEventを使用してください。生成されたSolr設定ファイルを変更します。

Drush Commands 10
drush search-api-solr:get-server-config

サーバー用に生成されたSolr設定ファイルをZIPアーカイブとしてダウンロードします。

drush search-api-solr:reinstall-fieldtypes

すべてのSolrフィールドタイプを削除し、YAML設定ファイルから再インストールします。

drush search-api-solr:install-missing-fieldtypes

YAML設定ファイルから不足しているSolrフィールドタイプをインストールします。

drush search-api-solr:finalize-index

1つまたはすべての有効な検索インデックスでファイナライゼーション操作を実行します。

drush search-api-solr:execute-raw-streaming-expression

Solr Cloudインデックスで生のストリーミング式を実行します。

drush search-api-solr:index-parallel

パフォーマンス向上のために並列スレッドを使用してアイテムをインデックス作成します。

drush search-api-solr:reload

設定変更を適用するためにSolr coreまたはcollectionをリロードします。

drush search-api-solr:upload-configset

Solr Cloudにconfigsetをアップロードし、collectionをリロードまたは作成します。

drush search-api-solr:delete-collection

Solr Cloud collectionを削除します。

drush search-api-solr:delete-all

すべてのインデックスにわたってSolrサーバーからすべてのドキュメントを削除します。

Troubleshooting 8
マルチサイトセットアップで検索結果に他のサイトのコンテンツが含まれる

サーバーのマルチサイト互換性設定で「このサイトの結果のみ取得」を有効にするか、クエリで適切なサイトハッシュフィルタリングが設定されていることを確認してください。

エラー:「Can not use FieldCache on multivalued field: boost_document」

これはSolr coreが適切なDrupal専用configsetなしで作成されたことを示しています。サーバーページからconfig.zipをダウンロードしてSolrに再デプロイし、coreをリロードしてください。

設定変更が検索結果に反映されない

Solr設定エンティティ(フィールドタイプ、キャッシュなど)を変更した後、新しいconfig.zipをダウンロードしてSolrに再デプロイしてください。その後、adminサブモジュールまたはdrush solr-reloadコマンドを使用してcore/collectionをリロードしてください。

新しい言語がステータスレポートで警告を表示する

適切な言語固有のSolrフィールドタイプ設定を追加してください。言語固有の設定が利用できない場合、モジュールは言語未定義のフィールドタイプにフォールバックします。これが許容される場合は詳細設定で「不足している言語固有フィールドタイプに関する警告を抑制」を有効にしてください。

Viewsの結果が古い、または新しいコンテンツが表示されない

Viewsキャッシュを無効にするか、「Search API(時間ベース)」キャッシュを使用してください。タグベースキャッシュの場合、インデックス設定で「最初の検索前にインデックスをファイナライズ」と「最後のファイナライゼーション後にコミットを待機」を有効にしてください。

オートコンプリートが動作しない、または提案が返されない

cronを実行するか、手動でサジェスタビルドをトリガーしてサジェスタが構築されていることを確認してください。提案用のリクエストハンドラがバックエンド設定で無効になっていないか確認してください。

Solr Cloudで検索時にOutOfMemoryException

詳細サーバー設定で「デフォルト結果行数」設定を減らしてください。複数のシャードと組み合���せた高い値は、Solrがソート結果のためにシャードごとに行制限を予約するため、メモリ制限を超える可能性があります。

並列インデックスコマンドがクラッシュする、または削除をブロックする

並列インデックスコマンドが中断された場合、最大1時間削除を防ぐブロッキング状態をクリアするために「drush search-api-solr:reset-empty-index-state」を実行してください。

Security Notes 6
  • Solrサーバーは公開インターネットに公開すべきではありません。ファイアウォールルールまたはネットワーク設定を使用して、WebサーバーからのみSolrサーバーへのアクセスを制限してください。
  • Solrがネットワーク経由でアクセス可能でなければならない場合はHTTP Basic認証(BasicAuthコネクタ)を使用し、本番環境では常にHTTPSを使用してください。
  • 「execute solr admin task」権限はcollection削除を含む強力な機能を付与します - 信頼できる管理者にのみ割り当ててください。
  • マルチサイトインデックスには注意してください - 適切なサイトハッシュフィルタリングが設定されていない場合、あるサイトのコンテンツが別のサイトのユーザーに表示される可能性があります。
  • インデックス済みコンテンツを確認し、機密データが検索結果やファセットを通じて意図せず公開されていないことを確認してください。
  • config.zipにはインデックス構造を明らかにする設定ファイルが含まれています - 安全に取り扱い、公開しないでください。