Question

Lucene est un excellent moteur de recherche, mais la version .NET est derrière la version officielle de Java (la dernière version stable .NET est 2.0, mais la dernière version de Lucene est la 2.4, qui offre davantage de fonctionnalités).

Comment vous en sortez-vous?

Était-ce utile?

La solution

Une des solutions que j'ai trouvées et qui a été surprise pourrait fonctionner: Créez une DLL .NET à partir d'un fichier .jar Java! En utilisant IKVM , vous pouvez téléchargez Lucene , obtenez le fichier .jar et exécutez:

ikvmc -target:library <path-to-lucene.jar>

qui génère une dll .NET semblable à ceci: lucene-core-2.4.0.dll

Vous pouvez ensuite simplement référencer cette DLL à partir de votre projet et vous êtes prêt à partir! Vous aurez besoin de certains types de java, aussi faites référence à IKVM.OpenJDK.ClassLibrary.dll. Votre code pourrait ressembler un peu à ceci:

QueryParser parser = new QueryParser("field1", analyzer);
java.util.Map boosts = new java.util.HashMap();
boosts.put("field1", new java.lang.Float(1.0));
boosts.put("field2", new java.lang.Float(10.0));

MultiFieldQueryParser multiParser = new MultiFieldQueryParser
                      (new string[] { "field1", "field2" }, analyzer, boosts);
multiParser.setDefaultOperator(QueryParser.Operator.OR);

Query query = multiParser.parse("ABC");
Hits hits = isearcher.search(query);

Je n’aurais jamais pensé que l’interopérabilité Java vers .NET était aussi simple. La meilleure partie est que C # et Java sont "presque". compatible avec le code source (en ce qui concerne les exemples Lucene). Il suffit de remplacer System.Out par Console.Writeln :).

=======

Mise à jour: lors de la création de bibliothèques telles que le surligneur Lucene, veillez à référencer l’assemblage principal (sinon, vous recevrez des avertissements concernant les classes manquantes). Donc, le surligneur est construit comme ceci:

ikvmc -target:library lucene-highlighter-2.4.0.jar -r:lucene-core-2.4.0.dll

Autres conseils

Téléchargez le code source et construisez-le. Je l'ai fait juste le week-end dernier et c'était facile. Aucun problème du tout. La source est à la version 2.3.1.

Je suis abonné à la liste de diffusion et à en juger par le développement actif de Lucene.Net.

Lucene.net est en développement et compte maintenant trois committers

J'ai converti le Lucene 2.4 de jar en dll de cette façon, mais il me donne maintenant une erreur qui indique que "Type ou espace de noms Lucene était introuvable". J'ai supprimé l'ancienne dll du projet et ajouté une référence pour le nouveau. Je veux vraiment me débarrasser de l'ancienne version car cela prenait environ 2 jours. Finalement, lors de l'optimisation, cela donnait une erreur et maintenant, l'index n'est pas modifiable: S. J'ai lu quelque part que la vitesse d'indexation de Lucene 2.4 est bien plus rapide que les anciennes versions. Si j'utilise la version 2.3.1 de SVN, est-ce que ce sera aussi plus rapide?

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