Solr vs Hibernate Search - Qui à choisir et à quel moment?
Nous construisons une application ecommerce. Nous sommes à l'aide de JAVA pile avec Hibernate et Spring. Comme avec tous les commerce électronique, nous avons besoin de bâtir la capacité de recherche dans le nôtre.
Donc, nous sommes tombés sur Hibernate Search et Apache Solr . Quelqu'un peut-il liste les avantages et les inconvénients de chacun d'eux afin que nous puissions choisir la solution idéale pour la Recherche d'Entreprise?
- Comme il n'est pas une réponse mais une suggestion: vous pourriez aussi envisager d'ElasticSearch, il est très similaire à Solr, et les poignées de redimensionnement. elasticsearch.org. engineering.socialcast.com/2011/05/...
- chaque architecte/dev va toujours répondre... ça dépend! Il y a beaucoup de questions. quelle sera votre solution de commerce en application de l'être? c'est à dire aucun. des utilisateurs? principalement en lecture? la plupart d'écriture? l'étendue de la capacité de recherche?
- C'est un plus lu de l'application. Je pense que tout e-commerce de l'application sera plus lire que d'écrire. De toute façon, je veux un générique de sorte qu'il sera utile à l'avenir des demandeurs d' 🙂
- l'air joli, va regarder 🙂
Vous devez vous connecter pour publier un commentaire.
Apache Solr est principalement utilisé pour la recherche de texte intégral: si vous voulez trouver les mots (au singulier et au pluriel par exemple) dans un grand ensemble de documents où la taille de chaque doc est d'un paragraphe à quelques pages. Solr peut-être pas mieux qu'une base de données régulièrement si vous ne l'utilisez pas pour la recherche de texte, mais uniquement pour les int et varchar recherche.
Ce lien peut vous être utile:
http://engineering.twitter.com/2011/04/twitter-search-is-now-3x-faster_1656.html
Dire que vous êtes de l'utilisation d'hibernate pour la persistance de la couche de votre application web avec l'annotation en fonction de la configuration. Ensuite, vous pouvez utiliser le même modèle de classes(comme celle que j'ai donnée ci-dessous) utilisée pour l'annotation pour les mettre à l'index dans le Solr utilisant le serveur Solr spécifique au serveur d'annotation.
je vais vous donner l'exemple où c'est fait.
Classe suivante est un Client de la Classe du Modèle sans Solr annotations.
Maintenant permet d'annoter cette classe avec Solr annotations à l'index des coordonnées du Client dans le Serveur Solr.
Vient de mettre @Champ attribut déposé que vous souhaitez indexer dans Solr serveur.
Alors le problème est comment dire solr à l'indice de ce modèle. il peut être fait comme suit.
Dire que vous allez conserver un client appelle alex dans la base de données, puis nous allons ajouter des données à la alex comme suit
et, après l'enregistrement de ce alex objet de base de données, vous devez dire à solr à l'indice de cet objet de données. il se fait comme suit.
Ce est tout au sujet de l'indexation solr avec l'utilisation d'Hibernate Technologie. c'est assez simple.j'ai expliqué l'idée de base de la façon de l'utiliser. j'ai reçu cet exemple à partir d'une application commerciale où nous avons utilisé la méthode ci-dessus pour mettre en œuvre la fonctionnalité de recherche
En plus de ce qui a été dit, quand, dans un environnement en clusters:
Hibernate-recherche:
Contre:
Pour:
Solr/SolrCloud:
ElasticSearch
Personnellement, je préfère ElasticSearch lors de l'exécution dans le cloud.
Il existe une autre alternative qui consiste à utiliser les deux ensemble et en combinant leurs avantages ensemble.
Jetez un oeil à: Combinant la puissance de veille prolongée de Recherche et de Solr
Je suis en les utilisant ensemble et il fonctionne très bien.
Hibernate search donne-moi toutes les entités annotations & analyse et les changements de la collection dans les limites de transaction, tandis que Solr me fournit le meilleur moteur de recherche avec beaucoup de fonctionnalités comme 1:m facettes, clusters, etc...
Ressemble vous besoin de lire sur les avantages et les inconvénients de chacune de ces. Il y a beaucoup de documentation disponible.
Si vous voulais mon avis, je dirais qu'il est judicieux d'utiliser Hibernate Recherche avec mise en veille prolongée. La mise à jour des index de recherche se produit lorsque hibernate effectue les opérations de base de données et seulement lorsqu'une transaction de base de données est engagé.
Hibernate search est un "pont" entre la mise en veille prolongée et Lucene. En d'autres termes, il rend persisté entités Hibernate automatiquement les recherches dans l'index Lucene.
Solr est un cadre de travail intégré sur le dessus de Lucene (les deux projets sont censés être fusionné un jour, mais c'est un long chemin à parcourir). Les différences entre Solr et Lucene sont expliquées dans une autre SORTE de post.