Frage

Lucene ist eine ausgezeichnete Suchmaschine, aber die .NET-Version ist hinter der offiziellen Java-Release (letzte stabile .NET Version ist 2.0, aber die neueste Java Lucene Version 2.4, die mehr Funktionen hat).

Wie bekommt man rund um das?

War es hilfreich?

Lösung

Ein Weg, ich fand, das war überrascht funktionieren könnte: Erstellen einer .NET-DLL aus einer Java .jar-Datei! Mit IKVM können Sie herunterladen Lucene , die .jar-Datei erhalten, und führen Sie:

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

, die einen .NET-DLL wie folgt erzeugt: lucene-Kern-2.4.0.dll

Sie können dann Referenz gerade diese DLL aus dem Projekt und Sie sind gut zu gehen! Es gibt einige Java-Typen, die Sie benötigen, so auch IKVM.OpenJDK.ClassLibrary.dll verweisen. Code könnte ein bisschen wie folgt aussehen:

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);

Ich wusste nie, Sie Java zu .NET Interoperabilität einfach so haben könnten. Der beste Teil ist, dass C # und Java ist „fast“ Quellcode-kompatibel (wo Lucene Beispiele betroffen sind). Ersetzen Sie einfach System.Out mit Console.Writeln.)

=======

Update: Wenn Bibliotheken wie die Highlighter Lucene bauen, stellen Sie sicher, dass Sie den Kern Assembly verweisen (sonst werden Sie Warnungen erhalten über fehlende Klassen). So wird der Textmarker wie folgt aufgebaut:

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

Andere Tipps

die Quelle herunterladen und bauen. Ich habe diese gerade am letzten Wochenende und es war einfach. Überhaupt kein Problem. Die Quelle ist in der Version 2.3.1.

Ich bin auf der Mailing-Liste abonniert und von ihm zu urteilen, Lucene.Net aktiv entwickelt wird.

Lucene.net in der Entwicklung und hat jetzt drei Committer

umgewandelt ich das Lucene 2.4 von Glas durch diese Art und Weise dll, aber jetzt gibt es mir einen Fehler, dass ‚Typ oder Namespace Lucene konnte nicht gefunden werden.‘ Ich entfernte die alte dll aus dem Projekt und hinzugefügt Referenz für die neuen. Ich mag wirklich die alten Version, um loszuwerden, wie es etwa 2 Tage in Anspruch nahm, und am Ende bei der Optimierung gab es einige Fehler und jetzt ist der Index nicht aktualisierbar: S. Ich habe irgendwo gelesen, dass Lucene 2.4 Indexierungsgeschwindigkeit ein Vielfaches schneller als die alten Versionen ist, wenn ich 2.3.1 von SVN verwenden, dass schneller sein?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top