J'essaie de choisir une technologie open source de recherche / indexation pour un projet .Net. Il semble que la norme pour les projets Java soit Lucene, mais en ce qui concerne .Net, le projet Lucene.Net semble être assez inactif. Est-ce toujours la meilleure option? Ou existe-t-il d'autres alternatives viables?
Réponses
Trop de publicités?Bien qu’il n’y ait pas eu de versions «à part entière» (c’est-à-dire une documentation complète, des mises à jour de sites Web) de Lucene.Net pendant un certain temps, de nouveaux commits ont encore été envoyés à son référentiel SVN. La dernière version (2.3.2), par exemple, a été étiquetée le 24/07/09 ( voir ici ). Étant donné que le développement est toujours actif, je l’utiliserais pour de nouveaux projets de recherche de texte intégral.
Je sais que ce n'est pas open-source, mais il est gratuit et très complet offrant de Microsoft:
Microsoft Search Server 2008 Express
-
De dehors-de-le-boîte de pertinence.
Localisée à l'interface.
Extensible expérience de recherche.
Aucun preset limites de documents.
Continue de propagation de l'indexation.
Out-of-the-box de l'indexation des connecteurs
Les résumés de contenu.
La mise en surbrillance.
Les meilleurs résultats et les définitions.
Requête de correction.
Double train de s'effondrer.
Filtre par propriété.
Filtrer par langue.
Trier par date.
E-mail/RSS alertes
lucene.net va nécessairement gal le java car c'est un port. Je n'aime pas la façon dont le lucene port est une copie directe bien qu'il ne le rendre plus facile pour les docs, je suppose. Quelque chose à considérer est l'utilisation de Solr si vous n'avez pas besoin de super serré (binaire) de l'intégration. Je l'ai utilisé avant de avec succès. Il est toujours alimenté par Lucene, mais je pense que c'est mieux car il a des caractéristiques améliorées. Vous pouvez l'utiliser à partir de .net via un point de terminaison HTTP.
Une question à vous poser est ce que vous avez vraiment besoin/envie d'une solution de recherche. Il y a beaucoup de manières de procéder à la mise en œuvre de la recherche et non à toutes les solutions de travail pour chaque situation.
SQLite a FTS3 (Full Text Search 3) qui peut faire ce que vous voulez. Je n'ai pas d'expérience directe avec cela, mais je crois qu'il a été développé explicitement pour faire ce que Lucene fait, du moins dans le cas le plus simple. Je ne crois pas que vous puissiez modifier le tokenizer ou quoi que ce soit (sans modifier le code source, de toute façon), mais c'est une option.
Après avoir utilisé Lucene.Net dans quelques projets, j'aimerais également ajouter la suggestion de compiler la version Java de lucene en code .net avec IKVM.NET . Cela fonctionne à merveille et vous n'avez jamais à vous inquiéter d'être obsolète par rapport à la version Java. Vous avez également la possibilité de compiler toutes les bibliothèques supplémentaires et de les utiliser (j'utilise les informations de recherche SIG dans un projet).