検索APIとApache Solr検索


34

Drupal 6でApache Solr Searchモジュールを使用しており、Drupal 7インストール用のSearch APIを探していますここでいくつかの議論を見ましたが、どちらかを選択する理由を探しています。

どちらかを選択する理由はありますか?もしそうなら、なぜ、またはそうではないのですか?Search APIには複雑さの問題やパフォーマンスの問題があると聞いています。これは本当ですか?


多言語検索にはsolrを推奨しません。検索の重要性に応じて、多言語solr検索は非常に時間がかかります。セットアップは面倒な場合があります。多言語検索の場合、使用言語はsolrでサポートされている必要があります。言語に設定する必要がある文法規則があります。また、安価な共有ホスティングを使用できないように、javaとsolrをインストールする必要があります。検索エンジンを開発している場合は、使用することをお勧めします。開発リソースを計算している場合は、有料のGoogleサイト検索の方が適している可能性があります。私も、GSS modulepの共同メンテナだ
ram4nd

何故ですか?ベンチマークはありますか?
-giorgio79

申し訳ありませんが、セットアップに苦労する場合があります。多言語検索の場合、使用言語はsolrでサポートされている必要があります。言語に設定する必要がある文法規則があります。また、開発状況にあるモジュールを調べたところ、物事を機能させるためにより多くの作業が必要でした。しかし、それは最速の検索エンジンです。そのため、検索機能がどれほど重要かを自問する必要があります。また、安価な共有ホスティングを使用できないように、javaとsolrをインストールする必要があります。
ram4nd

検索APIと比較してApache Solrに来なければならなかったことの1つは、複数選択フィルター検索を行うことでした。Search APIでは不可能に思えました。Solrにはこのオプションがあるようです。
user219492

マルチサイトサポートについて言及します。SearchAPIにはマルチサイトサポートがありません(同じSOLRインデックスを使用して複数のサイトコンテンツを保存します)。同じSOLRインデックス1.インデックス複数sistesのcontentents特定部位3により結果が唯一の他のサイトからの結果をフィルタリングローカルサイト上で検索を実行2.フィルタ:代わりに許可Apachesolr、
thePanz

回答:


19

2015年時点で、Search APIとApache Solr Searchモジュールを数字で比較できます。

                   | Apache Solr Search  | Search API
Posted in:         | 2007                | 2010
Downloads:         | >2k                 | >20k
Reported installs: | >21k                | >64k
Total bugs:        | >1200               | >600
Active bugs:       | >200                | >170
Commits:           | >1.3k               | >1.5k

これは明確な選択を示しています。Search APIは3年後に開発され、競合他社を利用することができました。

さらに、Search APIは非常に異なる柔軟なアーキテクチャを提供し、より積極的に維持されています。さらに重要なことは、最新のDrupal 8をすでにサポートしていることです。 ApachesolrにはまだないおよびSolr 5.xをいることです。

検索APIは新たに開始され、Viewsサポートなどの構成がより柔軟になりました(Apachesolrには追加のモジュールが必要です)。その機能を拡張するモジュールもたくさんあります。

第二に、これらのモジュールのアーキテクチャの違いに起因するコミュニティによって2回解決される問題を回避するために、現在これらの2つのプロジェクト間で次のような共同の取り組みが行われています。

  • Facet APIを介してファセットブロックを表示する一般的な方法を作成する(フィルターとも呼ばれる)
  • 共通のスキーマおよびsolrconfig.xml構成ファイル、
  • 両方のメンテナーが協力して、接続クラスをApache Solr SearchモジュールからSearch APIに移行しました。

出典:AcquiaのDrupal 8のSearch&Solrのバトルプラン

同じ環境で両方のモジュールを使用することはお勧めできません。

差異のさらなる技術分析については、以下の詳細を確認してください。

Search API

APIの概要:

  • 検索を簡単に作成するためのフレームワーク
  • データソースおよびバックエンド実装からの要約
  • バックエンドなどの拡張機能を備えた大規模なエコシステム
  • ファセットAPIの統合
  • エンティティAPIに大きく基づいています

    • メタデータを提供します
    • インデックスおよびサーバー構成に使用

拡張機能:

  • Search APIオートコンプリート
  • 添付ファイル
  • 保存された検索
  • ロケーション
  • プリティファセットパス
  • スライダー(検索API範囲)
  • などなど。

基本構造:

Search API Solrモジュールの基本構造

インデックス機能:

  • 異なるデータソース
  • 1つのデータソース:エンティティ
  • エンティティAPIに基づく:

    • 各プロパティにインデックスを付けることができます
    • 関連するエンティティのプロパティにインデックスを付けることができます

インデックスの設定方法-フィールド:

インデックスの設定方法-Search API Solrのフィールド

Search APIビュー:

  • フルビューのサポート
  • エンティティのプロパティを表示する
  • インデックス付きフィールドをフィルター、引数、または並べ替えとして使用する
  • Entity APIのビュー統合に基づくほとんどのコード
  • デフォルトでは、エンティティのロードを介して取得されたデータ

    • バイパス可能(サーバーの「Solrからデータを取得」設定)
  • 代替:Search APIページ

Search APIレシピ:

  • インデックスとサーバーのCRUDフック
  • 追加するためのフック

    • データソース
    • バックエンド
    • データ変更
    • プロセッサー
  • アイテムのインデックス作成時に発生するフック

  • 検索の実行時に発生するフック

アパッチソル

拡張機能:

  • 添付ファイル(メディアサポートなし、他のエンティティへの添付ファイルのカスタムコーディング)
  • 場所(Apachesolr geo、Apachesolrの場所)

Apachesolrレシピ:

  • オープンソースのエンタープライズ検索プラットフォーム
  • Apache Foundation
  • 全文検索、強調表示、ファセット検索、クラスタリング、豊富なドキュメント処理
  • 分散型
  • レプリケーション/スケーラブル
  • Java
  • XML / JSONなどのREST HTTPと回答
  • リレーショナルではない

出典:Search API vs Apachesolrスライドショー


こちらもご覧ください:


素晴らしい記事、ありがとう!質問1:同じ環境で両方のモジュールを使用しないことが推奨されるのはなぜですか?質問2:この時点でモジュール間のパフォーマンスの違いは無視できますか(Search API w / solrが複数のフィールドにインデックスを付けることができるようになったので、検索結果付きのサムネイル画像などを表示するためにエンティティの読み込みは不要になりました)?
ジョーダンマグナソン

@JordanMagnuson 1.両方のモジュールはあまり互換性がなく、ほとんどのWebサイトが1つのSolr検索インスタンスのみを扱っているため、両方のモジュールを同時に使用しないでください。作品を複製しても構いません。たとえば、検索ビューを作成する必要がある場合、両方のモジュールでビューモジュールとの統合が個別に提供されるため、2つのビューを作成する必要があります。
ケノーブ

@JordanMagnuson 2.パフォーマンスについてはよくわかりません。特定のバージョンを使用したことがなく、おそらくすべてのバージョンが変更されます(かなり前にApachesolrを使用していました)。ビューとファセットを使用している場合、通常はビューキャッシュメカニズムを使用するので、処理時間はあまり気にしません。もちろんmemcached、APC / XCacheなどもパフォーマンスはサイト構造とモジュールの相互作用に依存します。その他。
ケノーブ

検索APIがより多く使用されていることは面白いですが、Acquia自体はApache Solrモジュールdocs.acquia.com/acquia-search/search-api#animated
AlxVallejo

@AlxVallejo私は、彼らがAcquia Cloud(共有)Solrインスタンスをサポートするための安定したよく書かれたApachesolr設定ファイルを持っているので(それが私が推測する唯一の理由です)、Search APIが開発状態にあったことを考えると、生産にそれをお勧めすると思いますそのため、構成ファイルをより頻繁に更新する必要があるというリスクが含まれていました。彼らは(大規模な)プロジェクトにもそれを推奨しましたが、少しの間遊んで要件を確認した後、推奨をSearch APIに変更しました。安定した設定ファイルはありませんでしたが、独自の設定ファイルを提供しました。
ケノーブ

24

私は両方を使用してみましたが、これは言える:あなたの状況に依存します。

現在、ApacheSolr Integrationモジュールの安定版7リリースでは、ノードのインデックス付けのみが可能です。したがって、インデックスを作成する必要がある非ノードエンティティがある場合は、まだ進行中のマルチエンティティパッチを使用する必要があります。ApacheSolr Integrationは、適切に設定されている場合、コンテンツのさまざまなデータを保存できます。

Search APIはインデックスを作成し、そのためにたくさんのすばらしいものを作成します。ただし、Search APIは、検索するデータのIDのみを取得します。これは、ID以外のデータを読み込むにはentity_loadが必要になり、データベースまたは適切なキャッシュレイヤーにヒットすることを意味します。検索が多いサイトの場合、これは最も最適化されたソリューションではない可能性があります。

これは、Drupalcon chicagoで、ApacheSolr統合モジュールについて説明した素晴らしいプレゼンテーションです。検索APIへの言及については、16分です。


素晴らしい概要。まさに私が知りたかったこと。ありがとう!
hross

これで問題が解決した場合は、回答としてフラグを立ててください。ありがとう!
LSU_JBob

1
不思議に思う人のために、マルチエンティティは現在apache solr統合のdevブランチにあるので、次のベータで公開されるはずです。
LSU_JBob

2
このスレッドを読んでいる人向け。パフォーマンスの緩和要因の1つは、Search APIがノードデータのインデックス作成と取得を許可することです。ここでパフォーマンスの議論があります
hross

1
この回答は古くなっています。drupal.org / node / 1999392 をご覧ください。search_api_solrにマルチサイトオプションが追加され、NIDだけでなく返品も可能になりました。2014年にsearch_api_solrのインストールベースが大幅に増加し、apachesolrのD7の使用を追い抜いた。
ダンカンムー14

2

あなたは本当に両方を試して、情報に基づいた決定をしなければならないと思います。ただし、apachesolrにはまだDrupal 8のベータ版がないことを強く考慮してください。

Search APIでは、同じSearchAPIインデックス上のエンティティを結合できません。そのため、プロファイル、ユーザー、ノードは異なるインデックスにあります。マルチインデックス検索を可能にするモジュールがありますが、それは私のニーズをカバーしていませんでしたが、YMMVです。同じインデックスに多くのコンテンツタイプと多くのフィールドがある場合、インデックス定義は非常に扱いにくくなります。(マルチインデックス検索をサポートするNB SearchAPI D8レポート)

Apachesolrでは、コンテンツごとにフィールドを編集できますが、これは簡単かもしれませんが、関連するコンテンツをドキュメントに追加する機能はありません。実際、フィールドコレクション、参照、その他の情報を含むカスタムコードを記述する必要があります。フィールド。ビューを使用しない限り、Apachesolr D7はajaxをサポートしませんが、ビューを使用するとファセットが失われます。とはいえ...フックにコードを書いて満足であれば、インデックスに保存されている情報を変更するのはかなり簡単です。

エンティティIDを検索し、それぞれを個別にレンダリングする(両方のモジュールで使用できる)アイデアはパフォーマンスの悪夢のように思えますが、エンティティ表示をキャッシュすると、solr応答からレンダリングするよりも効率的です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.