2008-09-17 8 views
2

Dans l'une de nos applications commerciales (Win32, écrit en Delphi), nous aimerions implémenter la recherche en texte intégral. L'application stocke les données utilisateur dans un format binaire qui n'est pas directement reconnaissable en tant que texte.Comment implémenter le moteur de recherche en texte intégral

Idéalement, j'aimerais trouver une solution en cours de traitement (la DLL serait OK) ou un serveur local auquel j'aurais accès via TCP (de préférence). L'API devrait me permettre de soumettre une information textuelle au serveur (avec les métadonnées représentant le blob binaire d'où elle provient) et, bien sûr, cela devrait me permettre de faire une recherche en texte intégral avec au moins un support minimal pour les opérateurs logiques et recherche de sous-chaîne. Le support Unicode est requis.

J'ai trouvé une liste complète de moteurs de recherche sur Stack Overflow (What are some Search Servers out there?) mais je ne comprends pas vraiment lequel de ces moteurs pourrait satisfaire mes besoins. J'ai pensé à demander l'opinion au Collectif avant de passer un jour ou deux à tester chacun d'entre eux.

Des suggestions?

Répondre

1

Il y a un certain nombre d'options sur le marché. Soit des produits commerciaux à part entière, soit des variantes open source. Votre choix d'un fournisseur de recherche est très dépendant des clients que vous ciblez.

Microsoft propose une version Express gratuite de son serveur de recherche. Pour autant que je sache, l'édition Express est limitée à l'exécution du niveau d'application sur un serveur.

Il existe également le projet Apache Lucene qui est open source. Il a une belle API facile à utiliser et une grande communauté d'utilisateurs. Le projet original est basé sur Java, mais il y a aussi d'autres implementations tels que NLucene pour .NET que j'ai personnellement utilisés.

0

Je vous recommande de jeter un oeil à SQLite - la recherche en texte intégral est inclus dans la dernière version.

0

Je suppose que la réponse dépend de votre db. Par exemple, SQL Server propose une recherche en texte intégral et des requêtes en anglais si nécessaire.

0

Jetez un coup d'œil à PostgreSQL et à tsearch.

0

Essayez d'utiliser postgresql avec tsearch

0

Sphinx est probablement l'option la plus efficace et évolutive, tandis que SQLite - FTS3 est l'option la plus simple.

0

Bien que non en processus, Solr est très rapide (basé sur Lucene) et facilement accessible depuis n'importe quelle plateforme (HTTP)

Questions connexes