Antonello Provenzano wrote:

Erik Hatcher ha scritto:

On Jun 3, 2005, at 4:53 AM, Antonello Provenzano wrote:

I'm quite finishing the porting (a *proper* one) of the Apache Jakarta project Lucene.

What version of Lucene did you port? How can you ever be "finished" since Lucene is continually evolving?

I'm porting the version 1.4.3. I'm a developer as you are: I know perfectly a software is always in-motion and cannot finish until it's discontinued!

and would like it to be hosted and mantained: I have no time for the development of the code. .

I have recently tested yet another technique for using Lucene in .Net that resolves these two problems and others. I.e., with no effort I can use the latest Java source code pulled from subversion, including all patches in bugzilla. Also, it is possible to submit patches back to the main java codeline. The approach is to use IKVM for byte-code translation, leaving the source in Java. I tried this in both Microsoft .Net and Mono. On the Microsoft platform, all unit tests passed except for TestDateTools (and DateTools are only used by apps, not directly by Lucene itself). The bug there turned out to be an issue in the Calendar class in GNU.Classpath. I reported this and the Classpath guys have fixed it, so as soon as the fix propagates to IKVM, all unit tests will pass.

In Mono however, many tests fail.  I think many bugs remain in Mono.

I've not done stress testing yet, but performance on the unit test suite seems faster than in Java. Running the unit tests requires JUnit, which ikvm's into .Net byte code without issue.

There are disadvantages to this approach as well, but the advantages of access to latest code, zero effort, and participation in the Java Lucene community are strong positives. Integration with Lucene from C#.Net is not quite as good as the source code ports, e.g. names remain in Java conventions, but otherwise integration is fairly seamless. The main disadvantages are with debugging (e.g., can't step into Lucene from C#.Net app in Visual Studio) and with reverse integration (can't easily code a call from Lucene, e.g. a patch, into C#; it is possible to subclass Lucene in C#). If one does Lucene patches and extensions in Java, all works well. Plus, that allows for contributing them back to the main codeline.

Ok... I pourposed the port to the #Dashboard community, being a Mono developer: they suggested me to pourpose it to the Lucene community too, saying you would be interested in hosting it.

Antonello, have you run the unit tests on your port in Mono? If that works, it would be a most exciting development. Is your code posted somewhere?

Anyway, the #Dashboard developers would be interested in the development.

Can you provide a pointer to these guys?

The implementation I downloaded and compared against is the dotLucene (used by #dashboard and beagle too): I was unable to find the source code for the George Aroush's Lucene.NET. Then, I contacted the author of the dotLucene project, for replacing his code with mine. I'm still waiting for an answer...

George has many tools that help to automate his port. Also, he has just completed an initial port of the latest 1.9 code base, which some of us need. What porting approach do you use -- how much manual effort is involved?

Chuck

Reply via email to