Question

Nous avons une application Web qui permet aux utilisateurs de télécharger des documents, de créer leurs propres documents, etc. Les fichiers téléchargés sont stockés sur Amazon S3, les informations créées sont stockées dans une base de données MySQL. Ce que je recherche, c'est une sorte de moteur de recherche, dans lequel je nourris tous nos documents texte, chacun avec un identifiant unique, et il construit un index ou autre. Plus tard, je peux lui poser des requêtes de recherche, et il extraira les documents les plus appropriés (via leur ID), ainsi que des extraits de texte correspondant.

En gros, nous voulons permettre à nos utilisateurs de rechercher dans leur référentiel des éléments téléchargés, ainsi que tout ce que les autres utilisateurs ont marqué comme public. La solution devrait fonctionner sur un serveur Linux standard. Idéalement, elle serait en open source, mais je considérerai également des solutions payantes si leur prix n'est pas excessif.

Jusqu'à présent, j'ai trouvé trois candidats potentiels:

  1. Recherche en texte intégral MySQL - quelques rapports J'ai lu que c'est très lent
  2. Apache Lucene - malheureusement écrit en Java, mais j'utiliserai si je dois le faire. Soi-disant rapide
  3. Sphinx - ne semble pas être aussi populaire, idéalement quelle que soit la solution que je trouve, elle aura beaucoup soutien de la communauté.

Faites-moi savoir s'il y a d'autres bons choix que j'ai oubliés, ou si vous avez de l'expérience dans l'un de ces domaines.

Était-ce utile?

La solution

Consultez Solr . Il est basé sur Lucene, il est donc très rapide et il est vraiment facile à utiliser depuis n'importe quelle plate-forme.

Autres conseils

Sphinx mérite peut-être votre attention, car il fonctionne bien avec plusieurs RDMS courants (notamment MySQL)

Il existe également un Xapian rapide et tout à fait personnalisable.

Il prend en charge les indexeurs personnalisés permettant d'indexer des données non stockées dans une base de données, ce qui peut s'avérer utile pour vos documents stockés sur S3.

J'imagine que Google dispose d'une solution qui répond à vos besoins. Commencez ici: Google Enterprise

Il existe un port Ruby de Lucene appelé " Ferret ". En plus de l’API Ruby, vous pouvez obtenir l’implémentation c sous-jacente appelée "cFerret".

Lucene est très bonne. Et bien qu’il ait été écrit à l’origine en java, il existe une implémentation php http: / /framework.zend.com/manual/en/zend.search.lucene.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top