web-dev-qa-db-fra.com

Moteur de recherche - Lucene ou Solr

Nous devons intégrer un moteur de recherche dans notre logiciel de gestion de catalogue de produits. le catalogue devrait avoir plus de 4-5 mn. enregistrements avec des données relationnelles réparties sur plusieurs tables. Notre plate-forme de développement est Asp.Net 3.5 et nous avons effectué quelques travaux préliminaires sur Lucene, que nous avons trouvés bons. Cependant, nous venons juste de connaître Solr et recherchions des conseils pratiques pour comparer Lucene & Solr du point de vue de l'implémentation, du calendrier, de la maintenance régulière, des performances et des fonctionnalités. Tout conseil ou pointage serait vraiment utile. Merci.

52
Vikram

Lucene:

Apache Lucene est une bibliothèque de moteur de recherche de texte hautes performances et complète, entièrement écrite en Java. Il s'agit d'une technologie adaptée à presque toutes les applications qui nécessitent une recherche en texte intégral

Solr:

Solr est un serveur de recherche d'entreprise open source basé sur la bibliothèque de recherche Lucene Java, avec les API XML/HTTP et JSON, la mise en évidence des résultats, la recherche à facettes, la mise en cache, la réplication, une interface d'administration Web et .. .

Essentiellement, Lucene est intégré dans Solr et est purement une bibliothèque de recherche en texte intégral, dans le but d'être intégré dans des projets leur donnant des capacités de recherche en texte intégral. Solr a beaucoup plus de fonctionnalités et de capacités d'administration, permettant de rechercher des données structurées sans avoir à écrire de code personnalisé, de charger des données à partir de fichiers CSV, d'analyser toléramment les entrées utilisateur, de rechercher à facettes, de mettre en surbrillance le texte correspondant dans les résultats et de récupérer les résultats de recherche dans une variété de formats (XML, JSON, ...). Vérifiez page des fonctionnalités de Solr et voyez si une fonctionnalité est pertinente pour votre projet.

41
dcruz

Je dois être d'accord avec Andrew Clegg. Je pense que quand beaucoup de types de développeurs Java Java regardent Lucene vs Solr, Lucene semble plus convivial parce que c'est juste une bibliothèque (POJJ: Plain Old Java Jar !), comme toute autre bibliothèque et il semble simple à intégrer, par rapport à la complexité de Solr debout comme un processus distinct qui communique via HTTP complexe.

Cependant, je pense que pour presque tous les cas d'utilisation de recherche, Solr est la bonne approche. Parce que la majeure partie de la complexité de la recherche n'est pas l'intégration initiale directe, mais dans les domaines flous de l'optimisation des recherches, de la mise à l'échelle pour répondre à la demande et de la maintenance de vos index qui passent du monde centré sur les développeurs à celui des systèmes. Et Solr répond parfaitement à tous ces besoins.

18
Eric Pugh

Comme le dit dcruz, Solr utilise de toute façon Lucene, donc ce n'est pas une comparaison valide.

Lucene est une boîte à outils pour créer des applications de recherche, Solr est une application de recherche construite avec Lucene.

OMI, vous seriez fou pas pour utiliser Solr, car il vous fournit beaucoup de `` plomberie '' que vous auriez à écrire autrement - comme un gestionnaire d'importation de données configurable pour aspirer les données de vos référentiels RDBMS ou XML.

De plus, il vous donne une interface d'administration Web et d'autres cloches et sifflets.

6
Andrew Clegg

Une chose à considérer est la difficulté de configurer votre application lorsque vous mélangez ces deux environnements (Java/.NET). Si vous utilisez les bibliothèques Lucene.NET, vous pouvez limiter vos installations de dépendances externes requises, ce qui rationalise le déploiement.

Une autre chose à considérer est-ce que vous besoin les extras que Solr offre? A(nother) l'interface d'administration Web est probablement géniale mais elle étend votre enveloppe de risque. Fixer Java et un autre service signifie plus de gestion des correctifs. Si vous vous en tenez à .NET seule votre stratégie de correctif peut être le modèle de mise à jour Windows standard.

Bien sûr, le déploiement d'une implémentation à l'aide de Lucene.NET aura ses propres coûts de développement et de maintenance, mais d'après mon expérience, cela a été simple et facile à travailler.

2
Ira Miller

Nous sommes exactement dans la même situation que vous. Malheureusement, je n'ai pas été directement impliqué dans le processus d'évaluation, mais à la fin nous allons utiliser Solr intégré avec Lucene.

Le principal avantage est la variété des formats décrits par dcruz. Vous pouvez donc interroger votre Solr-Consumer et récupérer vos résultats de recherche sous forme de données XML qui peuvent être facilement analysées et affichées sur la page Web.

1
Juri

Permettez-moi de changer un peu votre objectif: êtes-vous prêt à changer l'architecture de votre produit? Lucene et Solr sont implémentés en Java. Ainsi, vous finirez par exécuter un autre conteneur Web pour l'héberger (et, par conséquent, vous perdrez la pureté de la plate-forme pour ainsi dire). Alors que Lucene était porté sur .NET ( projet Lucene.NET ), Solr n'était pas à ma connaissance. Si vous utilisez SQL Server (ce qui est probable, compte tenu de votre plate-forme), vous pouvez plutôt envisager la recherche en texte intégral SQL Server - elle a presque les mêmes fonctionnalités (pas si riches en fonctionnalités que Lucene/Solr, mais de toute façon) et généralement (dans la plupart des cas) est beaucoup plus facile à intégrer dans une application existante. En plus de cela, vous bénéficiez d'une maintenance simplifiée (elle accompagne votre base de données) et de rester au sein d'une même plate-forme.

1
AlexS