Lucene.Net
  1. Lucene.Net
  2. LUCENENET-167

Compact Framework & Silverlight Support

    Details

      Description

      Lucene.Net should support the Compact Framework & Silverlight versions of the .NET Framework.

      I've looked into what it might take to do this and most of it is pretty trivial to be able to support these frameworks. Most of what this would take is just changing the different type of classes to use for collection classes used inside of Lucene.Net.

      This does require changing some details in a lot of places, However this should not bring any compatibility issues with Java Lucene's API or index format. It will just change the classes used to some different ones that the frameworks support and also maybe need 1 to 3 classes that might need to be implemented in Lucene.net itself.

      Having made these changes Lucene.Net can be more available to new devices such as running on a window mobile cell phone, or your pda, or run in a Windows, Linux, or Mac computer that runs a silverlight application. This will allow the .Net compact framework & silverlight developers to use Lucene.Net in their applications to provide their users with the same capabilities of an awesome search framework. Developers can also use Lucene.Net to provide them spell checking capabilities in these environments.

        Activity

        Hide
        Digy added a comment -

        A related discussion: http://mail-archives.apache.org/mod_mbox/incubator-lucene-net-user/200811.mbox/browser (Silverlight, Compact Framework Support)

        I think, it comes again to the point of "keeping code close to the original Lucene.java" vs. "having a nicer .Net code".

        DIGY.

        Show
        Digy added a comment - A related discussion: http://mail-archives.apache.org/mod_mbox/incubator-lucene-net-user/200811.mbox/browser (Silverlight, Compact Framework Support) I think, it comes again to the point of "keeping code close to the original Lucene.java" vs. "having a nicer .Net code". DIGY.
        Hide
        Scott Lombard added a comment -

        This is a great idea and the priority can be increased as the team has more time to implement.

        Show
        Scott Lombard added a comment - This is a great idea and the priority can be increased as the team has more time to implement.
        Hide
        Troy Howard added a comment -

        Moved to Lucene.Net 2.9.4 release date.

        This will require updates to unit tests and new demos should be created to show use in CF/Silverlight scenarios.

        Show
        Troy Howard added a comment - Moved to Lucene.Net 2.9.4 release date. This will require updates to unit tests and new demos should be created to show use in CF/Silverlight scenarios.
        Hide
        Hanrock Wang added a comment -

        Very glad to see this request finally goes into release in a month.

        Show
        Hanrock Wang added a comment - Very glad to see this request finally goes into release in a month.
        Hide
        Pedro Lamas added a comment -

        Any news over this issue?

        Show
        Pedro Lamas added a comment - Any news over this issue?
        Hide
        Christopher Currens added a comment -

        It's still on our list of things to do. It will be very difficult to accomplish, and to be frank, we don't have enough committers to pull it off at this point. Lucene core (I don't even want to look at the contrib) has 500 errors if you try to compile it using the Portable Class Library tools in VS11 or the VS2010 extensions. There's actually far more than that, since VS tends to stop parsing files for certain errors. Some of the things are easier than others, for example, the Serializable attribute isn't supported in Silverlight, but we can easily wrap that in a preprocessor conditional (shudder). The more difficult things to handle would be IClonable (it's used EVERYWHERE), the lack of HashSet<T>, everything related to file system information, and other things.

        If we had more committers, we could get this done quicker once we've done a bit of planning. It will eventually happen, as to when however, that's very much up in the air.

        Show
        Christopher Currens added a comment - It's still on our list of things to do. It will be very difficult to accomplish, and to be frank, we don't have enough committers to pull it off at this point. Lucene core (I don't even want to look at the contrib) has 500 errors if you try to compile it using the Portable Class Library tools in VS11 or the VS2010 extensions. There's actually far more than that, since VS tends to stop parsing files for certain errors. Some of the things are easier than others, for example, the Serializable attribute isn't supported in Silverlight, but we can easily wrap that in a preprocessor conditional ( shudder ). The more difficult things to handle would be IClonable (it's used EVERYWHERE), the lack of HashSet<T>, everything related to file system information, and other things. If we had more committers, we could get this done quicker once we've done a bit of planning. It will eventually happen, as to when however, that's very much up in the air.
        Hide
        Prescott Nasser added a comment -

        I did a ton of work on this late last year to get it working for wp7 / portable class library. It was relatively easy to set the PCL as the build target and run around fixing errors (there were a ton of things). The place I ran into trouble was that unsigned ints / longs / shorts are not supported. So I had to change those to something like Int32, except surprise, they are used to bit shift, and they need to be unsigned (for overflow purposes)

        I spent some time looking how I could replace the logic of the bit shifting or compensate for non-overflow, but I was out of my depth and had to put it aside at a certain point.

        I do really want to get back to it at some point though.

        Show
        Prescott Nasser added a comment - I did a ton of work on this late last year to get it working for wp7 / portable class library. It was relatively easy to set the PCL as the build target and run around fixing errors (there were a ton of things). The place I ran into trouble was that unsigned ints / longs / shorts are not supported. So I had to change those to something like Int32, except surprise, they are used to bit shift, and they need to be unsigned (for overflow purposes) I spent some time looking how I could replace the logic of the bit shifting or compensate for non-overflow, but I was out of my depth and had to put it aside at a certain point. I do really want to get back to it at some point though.
        Hide
        Kamran Ayub added a comment -

        Prescott, did you have your progress available? I was looking at NoSQL options for Windows Phone and Lucene came to mind as I use it at work. If you can share your progress, I may be able to pick it up... There are some smart people where I work and some who are pretty fond of Lucene. It might be a fun project.

        For now, I will probably use Sterling unless I find something else.

        Are unsigned ints available in SL5 (WP8)? I haven't checked. Could always write C++ code for stuff that needs to be closer to the metal.

        Show
        Kamran Ayub added a comment - Prescott, did you have your progress available? I was looking at NoSQL options for Windows Phone and Lucene came to mind as I use it at work. If you can share your progress, I may be able to pick it up... There are some smart people where I work and some who are pretty fond of Lucene. It might be a fun project. For now, I will probably use Sterling unless I find something else. Are unsigned ints available in SL5 (WP8)? I haven't checked. Could always write C++ code for stuff that needs to be closer to the metal.

          People

          • Assignee:
            Unassigned
            Reporter:
            Andrew C. Smith
          • Votes:
            5 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

            • Due:
              Created:
              Updated:

              Development