En tant que créateur d'ElasticSearch, je peux peut-être vous expliquer pourquoi je suis allé de l'avant et l'ai créé en premier lieu :).
L'utilisation de Lucene pur est difficile. Il y a beaucoup de choses dont vous devez faire attention si vous voulez qu'il fonctionne vraiment bien, et aussi, c'est une bibliothèque, donc pas de support distribué, c'est juste une bibliothèque Java intégrée que vous devez maintenir.
En termes d'utilisation de Lucene, il y a bien longtemps (presque 6 ans maintenant), j'ai créé Compass. Son objectif était de simplifier l'utilisation de Lucene et de simplifier Lucene au quotidien. Ce que j'ai rencontré maintes et maintes fois, c'est l'exigence de pouvoir distribuer Compass. J'ai commencé à travailler dessus depuis Compass, en intégrant des solutions de grille de données comme GigaSpaces, Coherence et Terracotta, mais ce n'est pas suffisant.
À la base, une solution Lucene distribuée doit être partagée. En outre, avec l'avancement de HTTP et de JSON en tant qu'API omniprésentes, cela signifie qu'une solution permettant à de nombreux systèmes différents avec différents langages d'être facilement utilisée.
C'est pourquoi j'ai décidé de créer ElasticSearch. Il a un modèle distribué très avancé, parle JSON en natif et expose de nombreuses fonctionnalités de recherche avancées, toutes exprimées de manière transparente via JSON DSL.
Solr est également une solution pour exposer un serveur d'indexation / recherche sur HTTP, mais je dirais qu'ElasticSearch fournit un modèle distribué bien supérieur et une facilité d'utilisation (bien qu'il manque actuellement certaines fonctionnalités de recherche, mais pas pour longtemps, et dans aucun Dans ce cas, le plan consiste à intégrer toutes les fonctionnalités de Compass dans ElasticSearch). Bien sûr, je suis partial, car j'ai créé ElasticSearch, vous devrez donc peut-être vérifier par vous-même.
Quant au Sphinx, je ne l'ai pas utilisé, je ne peux donc pas commenter. Ce que je peux vous référer, c'est à ce fil sur le forum Sphinx qui, je pense, prouve le modèle distribué supérieur d'ElasticSearch.
Bien sûr, ElasticSearch a beaucoup plus de fonctionnalités que d'être simplement distribué. Il est en fait construit avec un nuage à l'esprit. Vous pouvez consulter la liste des fonctionnalités sur le site.