J'utilise le module Apache Solr Search dans Drupal 6 et je regarde l' API de recherche pour une installation de Drupal 7. J'ai vu des discussions ici mais je cherche des raisons de choisir l'une ou l'autre.
Y a-t-il une raison de choisir l'un par rapport à l'autre? Si oui, pourquoi ou pourquoi pas? J'ai entendu dire que des problèmes de complexité et / ou de performances pouvaient survenir avec l'API de recherche. Est-ce vrai?
Réponses:
À partir de 2015, nous pouvons comparer les modules de recherche de l'API de recherche avec Apache Solr avec les chiffres suivants:
qui indique le choix clair. L'API de recherche a été développée trois ans après et a réussi à tirer parti de son concurrent.
De plus, l'API de recherche fournit une architecture très différente et plus flexible, qui est maintenue plus activement. Plus important encore, il prend déjà en charge les versions les plus récentes de Drupal 8 et de Solr 5.x qu'Apachesolr n’a pas encore.
L'API de recherche a commencé à neuf et sa configuration est plus souple, notamment avec le support de Views (pour Apachesolr, vous avez besoin du module supplémentaire). Il existe également de nombreux modules qui étendent ses fonctionnalités.
Deuxièmement, pour éviter que la communauté ne résolve deux fois les problèmes liés à l’architecture différente de ces modules, il existe actuellement des efforts combinés entre ces deux projets, tels que:
Source: Plan de bataille de Search & Solr dans Drupal 8 chez Acquia
Notez qu'il n'est pas conseillé d'utiliser les deux modules dans le même environnement.
Pour une analyse technique plus poussée des différences, veuillez vérifier les détails ci-dessous.
API de recherche
Vue d'ensemble de l'API:
Fortement basé sur l'entité API
Caractéristiques d'extension:
Structure basique:
Caractéristiques d'index:
Basé sur l'entité API:
Comment configurer votre index - champs:
API de recherche:
Par défaut: données récupérées via le chargement d'une entité
Recettes API de recherche:
Crochets pour ajouter
Crochet déclenché lors de l'indexation d'éléments
Apachesolr
Caractéristiques d'extension:
Recettes Apachesolr:
Source: Search API vs Apachesolr diaporama
Voir également:
la source
J'ai essayé d'utiliser les deux et je peux dire ceci: cela dépend de votre situation.
Actuellement, la version 7 stable du module d’intégration ApacheSolr ne peut indexer que des nœuds. Par conséquent, si vous devez indexer des entités autres que des nœuds, vous devez utiliser le correctif de multicritité toujours en cours . ApacheSolr Integration peut stocker beaucoup de données différentes de contenu lorsqu'il est configuré correctement.
L'API de recherche indexe les entités et contient beaucoup de choses merveilleuses. Cependant, l'API de recherche ne récupère que l'id des données que vous recherchez. Cela signifie que charger plus de données que l'ID nécessitera un entity_load, frappant votre base de données ou n'importe quelle couche de mise en cache que vous avez mise en place. Pour les sites de recherche lourds, cette solution n'est peut-être pas la plus optimisée.
Voici une excellente présentation donnée à drupalcon chicago sur le module d’intégration ApacheSolr, minute 16 pour les mentions relatives à l’API de recherche.
la source
Je pense que vous devez vraiment essayer les deux et prendre une décision éclairée. Mais considérez fortement qu’apachesolr n’a toujours pas de version bêta pour Drupal 8.
Dans l'API de recherche, vous ne pouvez pas combiner des entités sur le même index SearchAPI. Ainsi, les profils, les utilisateurs, les nœuds sont sur des index différents. Il y a un module pour permettre les recherches multi-index, il ne couvrait pas mes besoins, mais YMMV. Si vous avez plusieurs types de contenu et plusieurs champs sur le même index, la définition de l'index peut devenir assez lourde. (NB: les rapports SearchAPI D8 prennent en charge la recherche multi-index)
Apachesolr permet l'édition de champs sur une base de contenu, ce qui peut être plus facile, mais n'a pas la possibilité d'ajouter du contenu associé à un document. En fait, vous devez vous attendre à devoir écrire du code personnalisé pour inclure des informations provenant de collections de champs, de références et autres. des champs. Apachesolr D7 ne supporte pas ajax, sauf si vous utilisez des vues, mais si vous utilisez des vues, vous perdez des facettes. Cela dit ... il est assez facile de modifier les informations stockées dans l'index si vous voulez coder avec des points d'ancrage.
L'idée de rechercher des identifiants d'entité, puis de les rendre individuellement (peut être utilisée par les deux modules) semblerait être un cauchemar de performances, mais si vous mettez en cache les affichages de vos entités, cela pourrait bien être plus efficace que de le faire à partir de la réponse de solr.
la source