You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by Maros Ivanco <ma...@datalan.sk> on 2005/08/17 15:26:34 UTC

lucene API


Hi there,

   I am creating a search solution based on Lucene. A part of the solution
   is Lucene web service. Even though the Lucene API is very straitforward
   to use on a local machine, I found creation of Lucene WS to be extremely
   difficult. The problem causes the API, which very often does not obey
   even trivial coding conventions (getter and setter names, for instance).
   As a result, the jax-rpc subsystem is unable to produce correct
   serializers and deserializers. From my point of view, there are serveral
   possibilities to solve the problem:

 1., write envelopes for nonserializable objects (Document, Field, Term,
 ...)
 2., write custom serializers and deserializers
 3., change lucene API

1. requires creation of many envelopes, since most of the Lucene classes do
not obey JavaBean semantics thus, they are not serializable by jax-rpc.
Wrapping and uwrapping of Lucene objects takes extra processing. Moreover,
the un/wrapping is sometimes not possible, because some objects (Filters,
for instance) do not exhibit their full state. I am doing this right now
(and doing, and doing,... I cannot see the end :-)).

2. requires creation of de/serializer for every nonserializable class. Also
requires extra configuration + generation of factories. Twice as difficult
as solution 1. Moreover, this solution renders resulting WS as nonportable.

3. requires change of lucene API in the way that will allow either direct
de/serialization or, at least, the solution 1. As far as Lucene is open
sourced, everybody can make changes, but the real question is, whether the
changes will become part of the official distribution. If not, the overall
search solution will remain stucked with current release.

I would personally prefer the third one, but only if the changes will make
it to the official release. Our company plans to deploy several instances
of the solution. There is certain probability, that my employer will
contribute some resources (my time) to the project. The question is,
whether the contemporary development comunity is willing to accept this
kind of changes and if I can participate. So, is it?

Maros.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org


Re: lucene API

Posted by Daniel Naber <lu...@danielnaber.de>.
On Wednesday 17 August 2005 15:26, Maros Ivanco wrote:

> I would personally prefer the third one, but only if the changes will
> make it to the official release.

Whether a patch is accepted can obviously only be decided when we see the 
patch, so no promises can be made.

Regards
 Daniel

-- 
http://www.danielnaber.de

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org


Re: lucene API

Posted by Erik Hatcher <er...@ehatchersolutions.com>.
When I first started digging into the Lucene codebase, I felt  
similarly - the coding convention rule breaking drove me nuts.   
Lucene grew on me and I've changed my take on "conventions"  
dramatically thanks to Doug's explanations and the flavor he has  
imparted onto the codebase.  His "conventions" have changed how I code.

If JAX-RPC has issues with Lucene, it is more an issue with JAX-RPC  
than with Lucene.  There are sound reasons for the design of Lucene's  
API and the (non)serializability of most pieces of it.  What about  
the Sourceforge Lucene web service project?  Would using that rather  
than creating your own solution be reasonable?

     Erik


On Aug 17, 2005, at 9:26 AM, Maros Ivanco wrote:

>
>
> Hi there,
>
>    I am creating a search solution based on Lucene. A part of the  
> solution
>    is Lucene web service. Even though the Lucene API is very  
> straitforward
>    to use on a local machine, I found creation of Lucene WS to be  
> extremely
>    difficult. The problem causes the API, which very often does not  
> obey
>    even trivial coding conventions (getter and setter names, for  
> instance).
>    As a result, the jax-rpc subsystem is unable to produce correct
>    serializers and deserializers. From my point of view, there are  
> serveral
>    possibilities to solve the problem:
>
>  1., write envelopes for nonserializable objects (Document, Field,  
> Term,
>  ...)
>  2., write custom serializers and deserializers
>  3., change lucene API
>
> 1. requires creation of many envelopes, since most of the Lucene  
> classes do
> not obey JavaBean semantics thus, they are not serializable by jax- 
> rpc.
> Wrapping and uwrapping of Lucene objects takes extra processing.  
> Moreover,
> the un/wrapping is sometimes not possible, because some objects  
> (Filters,
> for instance) do not exhibit their full state. I am doing this  
> right now
> (and doing, and doing,... I cannot see the end :-)).
>
> 2. requires creation of de/serializer for every nonserializable  
> class. Also
> requires extra configuration + generation of factories. Twice as  
> difficult
> as solution 1. Moreover, this solution renders resulting WS as  
> nonportable.
>
> 3. requires change of lucene API in the way that will allow either  
> direct
> de/serialization or, at least, the solution 1. As far as Lucene is  
> open
> sourced, everybody can make changes, but the real question is,  
> whether the
> changes will become part of the official distribution. If not, the  
> overall
> search solution will remain stucked with current release.
>
> I would personally prefer the third one, but only if the changes  
> will make
> it to the official release. Our company plans to deploy several  
> instances
> of the solution. There is certain probability, that my employer will
> contribute some resources (my time) to the project. The question is,
> whether the contemporary development comunity is willing to accept  
> this
> kind of changes and if I can participate. So, is it?
>
> Maros.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-dev-help@lucene.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org


RE: lucene API

Posted by Robert Engels <re...@ix.netcom.com>.
I think you should leave the API as is, and write a custom XML writer for
lucene search results. The request is trivial since you can simple pass the
single string. I would not write wrapper beans just to use the built-in
serialization support.

The custom XML writer will be MUCH, MUCH faster, as you do not need to
create an XML document first. The XML needed to support a Lucene search
result is quite trivial.

R

-----Original Message-----
From: Maros Ivanco [mailto:maros_ivanco@datalan.sk]
Sent: Wednesday, August 17, 2005 8:27 AM
To: java-dev@lucene.apache.org
Cc: Marek Baumerth
Subject: lucene API




Hi there,

   I am creating a search solution based on Lucene. A part of the solution
   is Lucene web service. Even though the Lucene API is very straitforward
   to use on a local machine, I found creation of Lucene WS to be extremely
   difficult. The problem causes the API, which very often does not obey
   even trivial coding conventions (getter and setter names, for instance).
   As a result, the jax-rpc subsystem is unable to produce correct
   serializers and deserializers. From my point of view, there are serveral
   possibilities to solve the problem:

 1., write envelopes for nonserializable objects (Document, Field, Term,
 ...)
 2., write custom serializers and deserializers
 3., change lucene API

1. requires creation of many envelopes, since most of the Lucene classes do
not obey JavaBean semantics thus, they are not serializable by jax-rpc.
Wrapping and uwrapping of Lucene objects takes extra processing. Moreover,
the un/wrapping is sometimes not possible, because some objects (Filters,
for instance) do not exhibit their full state. I am doing this right now
(and doing, and doing,... I cannot see the end :-)).

2. requires creation of de/serializer for every nonserializable class. Also
requires extra configuration + generation of factories. Twice as difficult
as solution 1. Moreover, this solution renders resulting WS as nonportable.

3. requires change of lucene API in the way that will allow either direct
de/serialization or, at least, the solution 1. As far as Lucene is open
sourced, everybody can make changes, but the real question is, whether the
changes will become part of the official distribution. If not, the overall
search solution will remain stucked with current release.

I would personally prefer the third one, but only if the changes will make
it to the official release. Our company plans to deploy several instances
of the solution. There is certain probability, that my employer will
contribute some resources (my time) to the project. The question is,
whether the contemporary development comunity is willing to accept this
kind of changes and if I can participate. So, is it?

Maros.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org