Digy,

        It's serendipity that this is the first email that I receive in
joining this group, as the reason I joined was because I found that I very
much don't like the API or some of the translations from the Java version of
Lucene.

        To that end, I've taken the stable release (2.0) and started to do a
port to 3.5 (although most of it is 2.0 compliant, I use LINQ in very few
places), addressing most of the following at this point:

- Proper implementation of IDisposable over Close methods

- Proper implementation of IEnumerable<T> and replacing for with foreach
loops
        - Use of LINQ in some places in order to make code more declarative
(e.g. flatting out nested loops)

- Removed use of Join method on the Thread class (it is depreciated),
replaced with other .NET synchronization primitives.

- Replacing ArrayList and Hashtable with List<T> and Dictionary<TKey,
TValue> instances
        - Using generic versions vs non-generic versions, especially when a
type parameter is a structure provides massive performance gains (due to
lack of boxing)
        - Where synchronized versions were used, locks were put into place
at appropriate areas to lock access
                - Lock scope was expanded to ensure that multiple operations
on the same synchronized resource is atomic

- Implementing .NET types where appropriate
        - e.g. ScoreDocComparator becomes IScoreDocComparer, deriving from
IComparer<ScoreDoc>
        - Methods that override Equals implement IEquatable<T>, and
possibly, IComparable<T>

- Condensing types
        - e.g. ICharStream is defined twice.

        The list goes on of course.  But these are some of the biggies.  I'm
currently getting the source from SVN, and seeing where I can contribute
without causing too much of a fuss. =)

                - Nick

        
-----Original Message-----
From: Digy [mailto:digyd...@gmail.com] 
Sent: Monday, November 09, 2009 1:19 PM
To: lucene-net-user@incubator.apache.org
Subject: RE: 2.9 Target Framework

I think we should stick to .NET 2.0 till Lucene 3.0 which can be a good
place to switch to .NET 3.5 (so will Lucene.Java do also).

There are also a lot of places where smarter codes can be used ( replacing
"GetEnumerator+while" with "foreach", implementing a .NET like "Set" instead
of using Hashtable etc.) But it can  be a problem in porting unless we catch
up with Lucene.Java.

DIGY


-----Original Message-----
From: Michael Garski [mailto:mgar...@myspace-inc.com] 
Sent: Monday, November 09, 2009 7:26 PM
To: lucene-net-...@incubator.apache.org;
lucene-net-user@incubator.apache.org
Subject: 2.9 Target Framework

Apologies for the cross-posting to both lists, but I think this issue is
applicable to both.

 

What is the target framework for Lucene.Net 2.9?  I'm assuming 2.0  but
would like to ensure this is defined.  There are a few cases in some of
the internal implementation where use of LINQ would be handy, such as in
collection transformations to arrays.  Overall, it's not a big deal to
target 2.0 however some of the implementation will be a bit more elegant
and precise if we target 3.5.

 

Cheers,

 

Michael

 

Michael Garski

Sr. Search Architect 

310.969.7435 (office)

310.251.6355 (mobile)

www.myspace.com/michaelgarski

 

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to