私は Apache Solr Search モジュールをDrupal 6で使用しており、 Search API for a Drupal 7 install。私はいくつかの議論を見ました ここ しかし、どちらか一方を選択する理由を探しています。
どちらか一方を選択する理由はありますか?もしそうなら、なぜ、なぜそうでないのですか? Search APIには複雑性の問題やパフォーマンスの問題がある可能性があると聞いています。これは本当ですか?
2015年の時点で、検索APIとApache Solr検索モジュールを数値で比較できます。
| 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は非常に異なる、より柔軟なアーキテクチャを提供し、より積極的に維持されています。さらに重要なことは、Apachesolrにはまだない最新の Drupal 8 とSolr 5.xがすでにサポートされていることです。
Search APIは新しく始まり、Viewsサポートを含む構成でより柔軟になりました(Apachesolrの場合は、追加のモジュールが必要です)。その機能を拡張するモジュールもたくさんあります。
次に、これらのモジュールのアーキテクチャーの違いによりコミュニティーによって2度解決される問題を回避するために、現在、以下のようなこれら2つのプロジェクトの間にいくつかの結合された取り組みがあります。
出典: 検索&SolrのバトルプランDrupal 8 Acquiaで
同じ環境で両方のモジュールを使用することはお勧めしません。
差異の詳細な技術分析については、以下の詳細を確認してください。
APIの概要:
Entity APIに大きく基づいています
拡張機能:
基本的な構造:
インデックス機能:
Entity APIに基づく:
インデックスの構成方法-フィールド:
検索APIビュー:
デフォルト:エンティティの読み込みによって取得されたデータ
Search APIレシピ:
追加用のフック
アイテムのインデックス作成時に発生するフック
拡張機能:
Apachesolrレシピ:
以下も参照してください。
私は両方を使用してみましたが、私はこれを言うことができます:それはあなたの状況に依存します。
現在、ApacheSolr統合モジュールの安定した7リリースでは、ノードのインデックス作成のみが可能です。したがって、インデックスを作成する必要がある非ノードエンティティがある場合は、まだ進行中の multientity パッチを使用する必要があります。 ApacheSolrインテグレーションは、適切に設定されている場合、コンテンツの多くの異なるデータを保存できます。
Search APIはインデックスエンティティを実行し、そのためにすばらしいものをたくさん書いています。ただし、Search APIは検索しているデータのIDのみをフェッチします。つまり、ID以外のデータをロードするには、entity_loadが必要であり、データベースや、配置したキャッシングレイヤーにアクセスする必要があります。検索が多いサイトの場合、これは最も最適化されたソリューションではない可能性があります。
ここ は、ApacheSolr統合モジュールについてdrupalconシカゴで行われた素晴らしいプレゼンテーションです。検索APIについて言及する16分目です。
私はあなたが本当に両方を試みて、情報に基づいた決定をしなければならないと思います。ただし、apachesolrにはまだDrupal 8.のベータ版がありません。
Search APIでは、同じSearchAPIインデックスのエンティティを組み合わせることはできません。したがって、プロファイル、ユーザー、ノードは異なるインデックス上にあります。マルチインデックス検索を可能にするモジュールがあり、それは私のニーズをカバーしていませんが、YMMVをカバーしています。同じインデックスに多くのコンテンツタイプと多くのフィールドがある場合、インデックスの定義が非常に扱いにくくなる可能性があります。 (NB IndexAPI D8レポートは、マルチインデックス検索をサポートしています)
Apachesolrではコンテンツごとにフィールドを編集できますが、これは簡単かもしれませんが、関連するコンテンツをドキュメントに追加する機能はありません。実際には、フィールドコレクション、参照、およびその他の情報を含むカスタムコードを記述する必要があります田畑。 Apachesolr D7は、ビューを使用しない限りajaxをサポートしませんが、ビューを使用するとファセットが失われます。とはいえ、フックにコーディングしておけば、インデックスに格納されている情報を変更するのは簡単です。
エンティティIDを検索し、それぞれを個別にレンダリングする(両方のモジュールで使用可能)という考えは、パフォーマンスの悪夢のように思えますが、エンティティの表示をキャッシュする場合は、solr応答からのレンダリングよりも効率的です。