Search API Solr
Search APIモジュールにApache Solrバックエンドを提供し、ファセット、ハイライト、オートコンプリート、多言語サポートなどの高度な機能を備えた強力な全文検索機能を実現します。
search_api_solr
インストール
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
/admin/config/search/search-api/server/{server_id}
コネクタタイプ、接続パラメータ、詳細オプションを含むSolrバックエンド設定を構成します。生成されたSolr設定ファイルのダウンロードへのアクセスも提供します。
/admin/config/search/search-api/server/{server_id}/files
このサーバー用に生成された個別のSolr設定ファイルを表示およびダウンロードします。特定のXML設定ファイルまたは完全なconfig.zipをダウンロードするためのアクセスを提供します。
/admin/config/search/search-api/server/{server_id}/solr_field_type
このサーバーで使用するカスタムSolrフィールドタイプを管理します。フィールドタイプは、言語固有の設定を含め、テキストがどのように分析およびインデックス化されるかを定義します。
/admin/config/search/search-api/server/{server_id}/solr_cache
最適な検索パフォーマンスのためのクエリ結果キャッシュ、フィルターキャッシュ、ドキュメントキャッシュを含むSolrキャッシュ設定を構成します。
/admin/config/search/search-api/server/{server_id}/solr_request_handler
さまざまなタイプの検索リクエストの処理方法を定義するSolrリクエストハンドラを管理します(select、suggest、mlt、spellなど)。
/admin/config/search/search-api/server/{server_id}/solr_request_dispatcher
HTTPリクエスト処理とキャッシュヘッダーを処理するSolrリクエストディスパッチャを設定します。
/admin/config/search/search-api/server/{server_id}/solr-admin/upload-configset
生成されたSolr configsetをSolr Cloudクラスタに直接アップロードします。新しいコレクションの場合、シャーディングとレプリケーション設定も指定できます。
/admin/config/search/search-api/server/{server_id}/solr-admin/reload-core
Solrサーバーにcore設定のリロードを強制します。設定ファイルを手動で更新した後に使用します。
/admin/config/search/search-api/server/{server_id}/solr-admin/reload-collection
Solr Cloudサーバーにすべてのノードでcollection設定のリロードを強制します。
/admin/config/search/search-api/server/{server_id}/solr-admin/delete-collection
Solr Cloud collectionを削除します。警告:これはcollectionとすべてのインデックス済みデータを完全に削除します。
/admin/config/search/search-api/server/{server_id}/solr-admin/field-analysis
さまざまなSolrフィールドタイプでテキストがどのように分析されるかをテストします。検索動作のデバッグやトークン化、ステミング、フィルタリングの理解に役立ちます。
/admin/config/search/search-api/index/{index_id}
ファイナライゼーション、ハイライト、More Like This、多言語オプションを含むSearch APIインデックスのSolr固有設定を構成します。
権限 2
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
サーバーのマルチサイト互換性設定で「このサイトの結果のみ取得」を有効にするか、クエリで適切なサイトハッシュフィルタリングが設定されていることを確認してください。
これはSolr coreが適切なDrupal専用configsetなしで作成されたことを示しています。サーバーページからconfig.zipをダウンロードしてSolrに再デプロイし、coreをリロードしてください。
Solr設定エンティティ(フィールドタイプ、キャッシュなど)を変更した後、新しいconfig.zipをダウンロードしてSolrに再デプロイしてください。その後、adminサブモジュールまたはdrush solr-reloadコマンドを使用してcore/collectionをリロードしてください。
適切な言語固有のSolrフィールドタイプ設定を追加してください。言語固有の設定が利用できない場合、モジュールは言語未定義のフィールドタイプにフォールバックします。これが許容される場合は詳細設定で「不足している言語固有フィールドタイプに関する警告を抑制」を有効にしてください。
Viewsキャッシュを無効にするか、「Search API(時間ベース)」キャッシュを使用してください。タグベースキャッシュの場合、インデックス設定で「最初の検索前にインデックスをファイナライズ」と「最後のファイナライゼーション後にコミットを待機」を有効にしてください。
cronを実行するか、手動でサジェスタビルドをトリガーしてサジェスタが構築されていることを確認してください。提案用のリクエストハンドラがバックエンド設定で無効になっていないか確認してください。
詳細サーバー設定で「デフォルト結果行数」設定を減らしてください。複数のシャードと組み合���せた高い値は、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にはインデックス構造を明らかにする設定ファイルが含まれています - 安全に取り扱い、公開しないでください。