Lucene search problem

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

Lucene search problem

amar.sannaik
Hi,

I have problem with lucene search, I am quite new to this. Can some body
help or just push me to who can please.

Problem what I am facing we need search for object whose attribute "chain"
contaning null, but lucene does not help indexing the null values..

how can I achieve this, or please guide me the alternative way of doing
this.

Thanks in advance.
-Amar
Reply | Threaded
Open this post in threaded view
|

Re: Lucene search problem

Erick Erickson
Try searching the mailing list archives for a fuller discussion, but
the short answer is usually to index an unique value for your
"null" entries, then search on that, something totally
outrageous like, say AAABBBCCCDDDEEEFFF.

Alternatively, you could create, at startup time, a
Filter of all the docs that *do* contain terms for the
field in question, flip the bits and use the Filter in your
searches. (Hint: see TermDocs/TermEnum)

Best
Erick

On Mon, Dec 22, 2008 at 8:11 AM, <[hidden email]> wrote:

> Hi,
>
> I have problem with lucene search, I am quite new to this. Can some body
> help or just push me to who can please.
>
> Problem what I am facing we need search for object whose attribute "chain"
> contaning null, but lucene does not help indexing the null values..
>
> how can I achieve this, or please guide me the alternative way of doing
> this.
>
> Thanks in advance.
> -Amar
>
Reply | Threaded
Open this post in threaded view
|

Re: Lucene search problem

Aaron Schon
I would second Erick's recommendation - create an arbitrary representation for NULL such as "NULL" (if you are certain the term "NULL" does not occur in actual docs. Alternatively, use "NULLNULNULLNULL" or something to that effect.



----- Original Message ----
From: Erick Erickson <[hidden email]>
To: [hidden email]
Sent: Monday, December 22, 2008 8:58:21 AM
Subject: Re: Lucene search problem

Try searching the mailing list archives for a fuller discussion, but
the short answer is usually to index an unique value for your
"null" entries, then search on that, something totally
outrageous like, say AAABBBCCCDDDEEEFFF.

Alternatively, you could create, at startup time, a
Filter of all the docs that *do* contain terms for the
field in question, flip the bits and use the Filter in your
searches. (Hint: see TermDocs/TermEnum)

Best
Erick

On Mon, Dec 22, 2008 at 8:11 AM, <[hidden email]> wrote:

> Hi,
>
> I have problem with lucene search, I am quite new to this. Can some body
> help or just push me to who can please.
>
> Problem what I am facing we need search for object whose attribute "chain"
> contaning null, but lucene does not help indexing the null values..
>
> how can I achieve this, or please guide me the alternative way of doing
> this.
>
> Thanks in advance.
> -Amar
>



     

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Lucene search problem

amar.sannaik
Hi Aaron Schon/EricK,

That really make sense to me but it really seems easy if is the string
object. See the object structure I have it below hopefully that gives you
some idea

class Recipe {
@DocumentId
Integer id;
@IndexedEmbedded
Chain chain;
//gettter and setter
}

class Chain {
@DocumentId
Integer id;
@Field(index = Index.TOKENIZED, name="chainName")
String name;
//getter and setter
}

I am creating index on the recipe object. and for some recipe.m_chain would
be null. So can you tell me how do I assign the value "NULLNULNULLNULL" for
object chain in recipe.

I also was thinking if #FieldBridge help me this way. My plan was to have
default value where chain is null as you mentioned. but it does not seems to
work for null values.

Please suggest

Thanks in advance.
-Amar

On Tue, Dec 23, 2008 at 12:04 AM, Aaron Schon <[hidden email]> wrote:

> I would second Erick's recommendation - create an arbitrary representation
> for NULL such as "NULL" (if you are certain the term "NULL" does not occur
> in actual docs. Alternatively, use "NULLNULNULLNULL" or something to that
> effect.
>
>
>
> ----- Original Message ----
> From: Erick Erickson <[hidden email]>
> To: [hidden email]
> Sent: Monday, December 22, 2008 8:58:21 AM
> Subject: Re: Lucene search problem
>
> Try searching the mailing list archives for a fuller discussion, but
> the short answer is usually to index an unique value for your
> "null" entries, then search on that, something totally
> outrageous like, say AAABBBCCCDDDEEEFFF.
>
> Alternatively, you could create, at startup time, a
> Filter of all the docs that *do* contain terms for the
> field in question, flip the bits and use the Filter in your
> searches. (Hint: see TermDocs/TermEnum)
>
> Best
> Erick
>
> On Mon, Dec 22, 2008 at 8:11 AM, <[hidden email]> wrote:
>
> > Hi,
> >
> > I have problem with lucene search, I am quite new to this. Can some body
> > help or just push me to who can please.
> >
> > Problem what I am facing we need search for object whose attribute
> "chain"
> > contaning null, but lucene does not help indexing the null values..
> >
> > how can I achieve this, or please guide me the alternative way of doing
> > this.
> >
> > Thanks in advance.
> > -Amar
> >
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>


--
Amar Sannaik | Programmer | ATHARVA LIBSON Software Pvt Ltd.,
# 9886476270, [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: Lucene search problem

Erick Erickson
How do you intend to index these? Lucene will not
index objects for you. You have to break the object
down into a series of fields. At that point you can
substitute whatever you want.

Best
Erick

On Tue, Dec 23, 2008 at 3:36 AM, <[hidden email]> wrote:

> Hi Aaron Schon/EricK,
>
> That really make sense to me but it really seems easy if is the string
> object. See the object structure I have it below hopefully that gives you
> some idea
>
> class Recipe {
> @DocumentId
> Integer id;
> @IndexedEmbedded
> Chain chain;
> //gettter and setter
> }
>
> class Chain {
> @DocumentId
> Integer id;
> @Field(index = Index.TOKENIZED, name="chainName")
> String name;
> //getter and setter
> }
>
> I am creating index on the recipe object. and for some recipe.m_chain would
> be null. So can you tell me how do I assign the value "NULLNULNULLNULL" for
> object chain in recipe.
>
> I also was thinking if #FieldBridge help me this way. My plan was to have
> default value where chain is null as you mentioned. but it does not seems
> to
> work for null values.
>
> Please suggest
>
> Thanks in advance.
> -Amar
>
> On Tue, Dec 23, 2008 at 12:04 AM, Aaron Schon <[hidden email]>
> wrote:
>
> > I would second Erick's recommendation - create an arbitrary
> representation
> > for NULL such as "NULL" (if you are certain the term "NULL" does not
> occur
> > in actual docs. Alternatively, use "NULLNULNULLNULL" or something to that
> > effect.
> >
> >
> >
> > ----- Original Message ----
> > From: Erick Erickson <[hidden email]>
> > To: [hidden email]
> > Sent: Monday, December 22, 2008 8:58:21 AM
> > Subject: Re: Lucene search problem
> >
> > Try searching the mailing list archives for a fuller discussion, but
> > the short answer is usually to index an unique value for your
> > "null" entries, then search on that, something totally
> > outrageous like, say AAABBBCCCDDDEEEFFF.
> >
> > Alternatively, you could create, at startup time, a
> > Filter of all the docs that *do* contain terms for the
> > field in question, flip the bits and use the Filter in your
> > searches. (Hint: see TermDocs/TermEnum)
> >
> > Best
> > Erick
> >
> > On Mon, Dec 22, 2008 at 8:11 AM, <[hidden email]> wrote:
> >
> > > Hi,
> > >
> > > I have problem with lucene search, I am quite new to this. Can some
> body
> > > help or just push me to who can please.
> > >
> > > Problem what I am facing we need search for object whose attribute
> > "chain"
> > > contaning null, but lucene does not help indexing the null values..
> > >
> > > how can I achieve this, or please guide me the alternative way of doing
> > > this.
> > >
> > > Thanks in advance.
> > > -Amar
> > >
> >
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [hidden email]
> > For additional commands, e-mail: [hidden email]
> >
> >
>
>
> --
> Amar Sannaik | Programmer | ATHARVA LIBSON Software Pvt Ltd.,
> # 9886476270, [hidden email]
>
Reply | Threaded
Open this post in threaded view
|

Re: Lucene search problem

amar.sannaik
hi Erick,

I agree lucene do not index the object. in the following example I have
quoted fields are indexed as chain.chainName.
I am able to retrieve recipe objects using FullTextQuery as
"chain.chainName:something' ... question is in somecase chain itself is
null.
I can be able to achieve required as below:

class Recipe {
  @DocumentId
  Integer id;
  @IndexedEmbedded
  Chain chain = new Chain();
  //gettter and setter
}

 class Chain {
  @DocumentId
  Integer id;
  @Field(index = Index.TOKENIZED, name="chainName")
  String name = "NULLNULNUL";
  //getter and setter
 }

so this means to always there is will be chain along with Recipe object with
has default name to "NULLNULNUL" and that wil be indexed..
We dont want to do that, Recipe is our persistence object and we hate to do
that.

-Amar

On Tue, Dec 23, 2008 at 8:05 PM, Erick Erickson <[hidden email]>wrote:

> How do you intend to index these? Lucene will not
> index objects for you. You have to break the object
> down into a series of fields. At that point you can
> substitute whatever you want.
>
> Best
> Erick
>
> On Tue, Dec 23, 2008 at 3:36 AM, <[hidden email]> wrote:
>
> > Hi Aaron Schon/EricK,
> >
> > That really make sense to me but it really seems easy if is the string
> > object. See the object structure I have it below hopefully that gives you
> > some idea
> >
> > class Recipe {
> > @DocumentId
> > Integer id;
> > @IndexedEmbedded
> > Chain chain;
> > //gettter and setter
> > }
> >
> > class Chain {
> > @DocumentId
> > Integer id;
> > @Field(index = Index.TOKENIZED, name="chainName")
> > String name;
> > //getter and setter
> > }
> >
> > I am creating index on the recipe object. and for some recipe.m_chain
> would
> > be null. So can you tell me how do I assign the value "NULLNULNULLNULL"
> for
> > object chain in recipe.
> >
> > I also was thinking if #FieldBridge help me this way. My plan was to have
> > default value where chain is null as you mentioned. but it does not seems
> > to
> > work for null values.
> >
> > Please suggest
> >
> > Thanks in advance.
> > -Amar
> >
> > On Tue, Dec 23, 2008 at 12:04 AM, Aaron Schon <[hidden email]>
> > wrote:
> >
> > > I would second Erick's recommendation - create an arbitrary
> > representation
> > > for NULL such as "NULL" (if you are certain the term "NULL" does not
> > occur
> > > in actual docs. Alternatively, use "NULLNULNULLNULL" or something to
> that
> > > effect.
> > >
> > >
> > >
> > > ----- Original Message ----
> > > From: Erick Erickson <[hidden email]>
> > > To: [hidden email]
> > > Sent: Monday, December 22, 2008 8:58:21 AM
> > > Subject: Re: Lucene search problem
> > >
> > > Try searching the mailing list archives for a fuller discussion, but
> > > the short answer is usually to index an unique value for your
> > > "null" entries, then search on that, something totally
> > > outrageous like, say AAABBBCCCDDDEEEFFF.
> > >
> > > Alternatively, you could create, at startup time, a
> > > Filter of all the docs that *do* contain terms for the
> > > field in question, flip the bits and use the Filter in your
> > > searches. (Hint: see TermDocs/TermEnum)
> > >
> > > Best
> > > Erick
> > >
> > > On Mon, Dec 22, 2008 at 8:11 AM, <[hidden email]> wrote:
> > >
> > > > Hi,
> > > >
> > > > I have problem with lucene search, I am quite new to this. Can some
> > body
> > > > help or just push me to who can please.
> > > >
> > > > Problem what I am facing we need search for object whose attribute
> > > "chain"
> > > > contaning null, but lucene does not help indexing the null values..
> > > >
> > > > how can I achieve this, or please guide me the alternative way of
> doing
> > > > this.
> > > >
> > > > Thanks in advance.
> > > > -Amar
> > > >
> > >
> > >
> > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [hidden email]
> > > For additional commands, e-mail: [hidden email]
> > >
> > >
> >
> >
> > --
> > Amar Sannaik | Programmer | ATHARVA LIBSON Software Pvt Ltd.,
> > # 9886476270, [hidden email]
> >
>



--
Amar Sannaik | Programmer | ATHARVA LIBSON Software Pvt Ltd.,
# 9886476270, [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: Re: Lucene search problem

Tom Roberts LUXONLINE
In reply to this post by amar.sannaik
AUTOMATIC REPLY
LUX is closed until 5th January 2009



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Fwd: Lucene search problem

amar.sannaik
In reply to this post by amar.sannaik
Hello Erick,

ah I got the problem solved :). here is how I changed my recipe object to be

class Recipe {
@DocumentId
Integer id;
@Field(index = Index.TOKENIZED, name="chainName")
@FieldBridge(impl= ChainFieldBridge.class)
Chain chain;
}

Here what I am trying to do is, save object to be as index field and there
is bridge to cross and bridge take care of how it should be indexed.

here is code snippet from my bridge

public void set(String pName, Object pValue, Document pDocument, Store
pStore,
            Index pIndex, Float pArg5) {
        Field lField = null;
        if(null == pValue) {
            lField = new Field(pName,"nullnull",pStore, pIndex);
            pDocument.add(lField);
        } else {
            Chain lChain = (Chain)pValue;
            lField = new Field(pName,lChain.getName(),pStore, pIndex);
            pDocument.add(lField);
        }
    }

so here, where chain object is null I am saving the value to be "nullnull".
The query I would use to retrieve what is null looks like
"chainName:nulllnull".

This solve everything I was looking for.

Thanks,
-Amar
---------- Forwarded message ----------
From: <[hidden email]>
Date: Wed, Dec 24, 2008 at 11:33 AM
Subject: Re: Lucene search problem
To: [hidden email]


hi Erick,

I agree lucene do not index the object. in the following example I have
quoted fields are indexed as chain.chainName.
I am able to retrieve recipe objects using FullTextQuery as
"chain.chainName:something' ... question is in somecase chain itself is
null.
I can be able to achieve required as below:

class Recipe {
  @DocumentId
  Integer id;
  @IndexedEmbedded
  Chain chain = new Chain();
  //gettter and setter
}

 class Chain {
  @DocumentId
  Integer id;
  @Field(index = Index.TOKENIZED, name="chainName")
  String name = "NULLNULNUL";
  //getter and setter
 }

so this means to always there is will be chain along with Recipe object with
has default name to "NULLNULNUL" and that wil be indexed..
We dont want to do that, Recipe is our persistence object and we hate to do
that.

-Amar


On Tue, Dec 23, 2008 at 8:05 PM, Erick Erickson <[hidden email]>wrote:

> How do you intend to index these? Lucene will not
> index objects for you. You have to break the object
> down into a series of fields. At that point you can
> substitute whatever you want.
>
> Best
> Erick
>
> On Tue, Dec 23, 2008 at 3:36 AM, <[hidden email]> wrote:
>
> > Hi Aaron Schon/EricK,
> >
> > That really make sense to me but it really seems easy if is the string
> > object. See the object structure I have it below hopefully that gives you
> > some idea
> >
> > class Recipe {
> > @DocumentId
> > Integer id;
> > @IndexedEmbedded
> > Chain chain;
> > //gettter and setter
> > }
> >
> > class Chain {
> > @DocumentId
> > Integer id;
> > @Field(index = Index.TOKENIZED, name="chainName")
> > String name;
> > //getter and setter
> > }
> >
> > I am creating index on the recipe object. and for some recipe.m_chain
> would
> > be null. So can you tell me how do I assign the value "NULLNULNULLNULL"
> for
> > object chain in recipe.
> >
> > I also was thinking if #FieldBridge help me this way. My plan was to have
> > default value where chain is null as you mentioned. but it does not seems
> > to
> > work for null values.
> >
> > Please suggest
> >
> > Thanks in advance.
> > -Amar
> >
> > On Tue, Dec 23, 2008 at 12:04 AM, Aaron Schon <[hidden email]>
> > wrote:
> >
> > > I would second Erick's recommendation - create an arbitrary
> > representation
> > > for NULL such as "NULL" (if you are certain the term "NULL" does not
> > occur
> > > in actual docs. Alternatively, use "NULLNULNULLNULL" or something to
> that
> > > effect.
> > >
> > >
> > >
> > > ----- Original Message ----
> > > From: Erick Erickson <[hidden email]>
> > > To: [hidden email]
> > > Sent: Monday, December 22, 2008 8:58:21 AM
> > > Subject: Re: Lucene search problem
> > >
> > > Try searching the mailing list archives for a fuller discussion, but
> > > the short answer is usually to index an unique value for your
> > > "null" entries, then search on that, something totally
> > > outrageous like, say AAABBBCCCDDDEEEFFF.
> > >
> > > Alternatively, you could create, at startup time, a
> > > Filter of all the docs that *do* contain terms for the
> > > field in question, flip the bits and use the Filter in your
> > > searches. (Hint: see TermDocs/TermEnum)
> > >
> > > Best
> > > Erick
> > >
> > > On Mon, Dec 22, 2008 at 8:11 AM, <[hidden email]> wrote:
> > >
> > > > Hi,
> > > >
> > > > I have problem with lucene search, I am quite new to this. Can some
> > body
> > > > help or just push me to who can please.
> > > >
> > > > Problem what I am facing we need search for object whose attribute
> > > "chain"
> > > > contaning null, but lucene does not help indexing the null values..
> > > >
> > > > how can I achieve this, or please guide me the alternative way of
> doing
> > > > this.
> > > >
> > > > Thanks in advance.
> > > > -Amar
> > > >
> > >
> > >
> > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [hidden email]
> > > For additional commands, e-mail: [hidden email]
> > >
> > >
> >
> >
> > --
> > Amar Sannaik | Programmer | ATHARVA LIBSON Software Pvt Ltd.,
> > # 9886476270, [hidden email]
> >
>



--
Amar Sannaik | Programmer | ATHARVA LIBSON Software Pvt Ltd.,
# 9886476270, [hidden email]



--
Amar Sannaik | Senior Engineer
Reply | Threaded
Open this post in threaded view
|

Re: Fwd: Lucene search problem

Aleksander M. Stensby
Hello Amar,
the reason why people got confused from your questions is that you are  
using Hibernate Search (which is built on top of Lucene and Hibernate) to  
persist objects from your DB to lucene. So, you should really ask such  
questions on the hibernate mailing list since the indexing logic has  
nothing at all to do with Lucene (since you are using annotations).
If you were to use Lucene directly, you would read values from you DB  
(possibly into you Entity Bean), then transform values into fields and  
index with IndexWriter. This is where Erick mentions that you could just  
do something like
if(recipe.getChain == null) {
  //add field with value = "NULLNULLNULL"
}else{
  ...
  // add value that we get from the chain object.
}


cheers,
  Aleks

On Wed, 24 Dec 2008 10:13:20 +0100, <[hidden email]> wrote:

> Hello Erick,
>
> ah I got the problem solved :). here is how I changed my recipe object  
> to be
>
> class Recipe {
> @DocumentId
> Integer id;
> @Field(index = Index.TOKENIZED, name="chainName")
> @FieldBridge(impl= ChainFieldBridge.class)
> Chain chain;
> }
>
> Here what I am trying to do is, save object to be as index field and  
> there
> is bridge to cross and bridge take care of how it should be indexed.
>
> here is code snippet from my bridge
>
> public void set(String pName, Object pValue, Document pDocument, Store
> pStore,
>             Index pIndex, Float pArg5) {
>         Field lField = null;
>         if(null == pValue) {
>             lField = new Field(pName,"nullnull",pStore, pIndex);
>             pDocument.add(lField);
>         } else {
>             Chain lChain = (Chain)pValue;
>             lField = new Field(pName,lChain.getName(),pStore, pIndex);
>             pDocument.add(lField);
>         }
>     }
>
> so here, where chain object is null I am saving the value to be  
> "nullnull".
> The query I would use to retrieve what is null looks like
> "chainName:nulllnull".
>
> This solve everything I was looking for.
>
> Thanks,
> -Amar
> ---------- Forwarded message ----------
> From: <[hidden email]>
> Date: Wed, Dec 24, 2008 at 11:33 AM
> Subject: Re: Lucene search problem
> To: [hidden email]
>
>
> hi Erick,
>
> I agree lucene do not index the object. in the following example I have
> quoted fields are indexed as chain.chainName.
> I am able to retrieve recipe objects using FullTextQuery as
> "chain.chainName:something' ... question is in somecase chain itself is
> null.
> I can be able to achieve required as below:
>
> class Recipe {
>   @DocumentId
>   Integer id;
>   @IndexedEmbedded
>   Chain chain = new Chain();
>   //gettter and setter
> }
>
>  class Chain {
>   @DocumentId
>   Integer id;
>   @Field(index = Index.TOKENIZED, name="chainName")
>   String name = "NULLNULNUL";
>   //getter and setter
>  }
>
> so this means to always there is will be chain along with Recipe object  
> with
> has default name to "NULLNULNUL" and that wil be indexed..
> We dont want to do that, Recipe is our persistence object and we hate to  
> do
> that.
>
> -Amar
>
>
> On Tue, Dec 23, 2008 at 8:05 PM, Erick Erickson  
> <[hidden email]>wrote:
>
>> How do you intend to index these? Lucene will not
>> index objects for you. You have to break the object
>> down into a series of fields. At that point you can
>> substitute whatever you want.
>>
>> Best
>> Erick
>>
>> On Tue, Dec 23, 2008 at 3:36 AM, <[hidden email]> wrote:
>>
>> > Hi Aaron Schon/EricK,
>> >
>> > That really make sense to me but it really seems easy if is the string
>> > object. See the object structure I have it below hopefully that gives  
>> you
>> > some idea
>> >
>> > class Recipe {
>> > @DocumentId
>> > Integer id;
>> > @IndexedEmbedded
>> > Chain chain;
>> > //gettter and setter
>> > }
>> >
>> > class Chain {
>> > @DocumentId
>> > Integer id;
>> > @Field(index = Index.TOKENIZED, name="chainName")
>> > String name;
>> > //getter and setter
>> > }
>> >
>> > I am creating index on the recipe object. and for some recipe.m_chain
>> would
>> > be null. So can you tell me how do I assign the value  
>> "NULLNULNULLNULL"
>> for
>> > object chain in recipe.
>> >
>> > I also was thinking if #FieldBridge help me this way. My plan was to  
>> have
>> > default value where chain is null as you mentioned. but it does not  
>> seems
>> > to
>> > work for null values.
>> >
>> > Please suggest
>> >
>> > Thanks in advance.
>> > -Amar
>> >
>> > On Tue, Dec 23, 2008 at 12:04 AM, Aaron Schon <[hidden email]>
>> > wrote:
>> >
>> > > I would second Erick's recommendation - create an arbitrary
>> > representation
>> > > for NULL such as "NULL" (if you are certain the term "NULL" does not
>> > occur
>> > > in actual docs. Alternatively, use "NULLNULNULLNULL" or something to
>> that
>> > > effect.
>> > >
>> > >
>> > >
>> > > ----- Original Message ----
>> > > From: Erick Erickson <[hidden email]>
>> > > To: [hidden email]
>> > > Sent: Monday, December 22, 2008 8:58:21 AM
>> > > Subject: Re: Lucene search problem
>> > >
>> > > Try searching the mailing list archives for a fuller discussion, but
>> > > the short answer is usually to index an unique value for your
>> > > "null" entries, then search on that, something totally
>> > > outrageous like, say AAABBBCCCDDDEEEFFF.
>> > >
>> > > Alternatively, you could create, at startup time, a
>> > > Filter of all the docs that *do* contain terms for the
>> > > field in question, flip the bits and use the Filter in your
>> > > searches. (Hint: see TermDocs/TermEnum)
>> > >
>> > > Best
>> > > Erick
>> > >
>> > > On Mon, Dec 22, 2008 at 8:11 AM, <[hidden email]> wrote:
>> > >
>> > > > Hi,
>> > > >
>> > > > I have problem with lucene search, I am quite new to this. Can  
>> some
>> > body
>> > > > help or just push me to who can please.
>> > > >
>> > > > Problem what I am facing we need search for object whose attribute
>> > > "chain"
>> > > > contaning null, but lucene does not help indexing the null  
>> values..
>> > > >
>> > > > how can I achieve this, or please guide me the alternative way of
>> doing
>> > > > this.
>> > > >
>> > > > Thanks in advance.
>> > > > -Amar
>> > > >
>> > >
>> > >
>> > >
>> > >
>> > >
>> > >  
>> ---------------------------------------------------------------------
>> > > To unsubscribe, e-mail: [hidden email]
>> > > For additional commands, e-mail: [hidden email]
>> > >
>> > >
>> >
>> >
>> > --
>> > Amar Sannaik | Programmer | ATHARVA LIBSON Software Pvt Ltd.,
>> > # 9886476270, [hidden email]
>> >
>>
>
>
>



--
Aleksander M. Stensby
Senior software developer
Integrasco A/S
www.integrasco.no

Please consider the environment before printing all or any of this e-mail

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Fwd: Lucene search problem

amar.sannaik
Hi Aleks

Yep, sorry think I was at wrong window :) .. I really have got things solved
now.

Thanks
-Amar

On Wed, Dec 24, 2008 at 3:37 PM, Aleksander M. Stensby <
[hidden email]> wrote:

> Hello Amar,
> the reason why people got confused from your questions is that you are
> using Hibernate Search (which is built on top of Lucene and Hibernate) to
> persist objects from your DB to lucene. So, you should really ask such
> questions on the hibernate mailing list since the indexing logic has nothing
> at all to do with Lucene (since you are using annotations).
> If you were to use Lucene directly, you would read values from you DB
> (possibly into you Entity Bean), then transform values into fields and index
> with IndexWriter. This is where Erick mentions that you could just do
> something like
> if(recipe.getChain == null) {
>  //add field with value = "NULLNULLNULL"
> }else{
>  ...
>  // add value that we get from the chain object.
> }
>
>
> cheers,
>  Aleks
>
>
> On Wed, 24 Dec 2008 10:13:20 +0100, <[hidden email]> wrote:
>
>  Hello Erick,
>>
>> ah I got the problem solved :). here is how I changed my recipe object to
>> be
>>
>> class Recipe {
>> @DocumentId
>> Integer id;
>> @Field(index = Index.TOKENIZED, name="chainName")
>> @FieldBridge(impl= ChainFieldBridge.class)
>> Chain chain;
>> }
>>
>> Here what I am trying to do is, save object to be as index field and there
>> is bridge to cross and bridge take care of how it should be indexed.
>>
>> here is code snippet from my bridge
>>
>> public void set(String pName, Object pValue, Document pDocument, Store
>> pStore,
>>            Index pIndex, Float pArg5) {
>>        Field lField = null;
>>        if(null == pValue) {
>>            lField = new Field(pName,"nullnull",pStore, pIndex);
>>            pDocument.add(lField);
>>        } else {
>>            Chain lChain = (Chain)pValue;
>>            lField = new Field(pName,lChain.getName(),pStore, pIndex);
>>            pDocument.add(lField);
>>        }
>>    }
>>
>> so here, where chain object is null I am saving the value to be
>> "nullnull".
>> The query I would use to retrieve what is null looks like
>> "chainName:nulllnull".
>>
>> This solve everything I was looking for.
>>
>> Thanks,
>> -Amar
>> ---------- Forwarded message ----------
>> From: <[hidden email]>
>> Date: Wed, Dec 24, 2008 at 11:33 AM
>> Subject: Re: Lucene search problem
>> To: [hidden email]
>>
>>
>> hi Erick,
>>
>> I agree lucene do not index the object. in the following example I have
>> quoted fields are indexed as chain.chainName.
>> I am able to retrieve recipe objects using FullTextQuery as
>> "chain.chainName:something' ... question is in somecase chain itself is
>> null.
>> I can be able to achieve required as below:
>>
>> class Recipe {
>>  @DocumentId
>>  Integer id;
>>  @IndexedEmbedded
>>  Chain chain = new Chain();
>>  //gettter and setter
>> }
>>
>>  class Chain {
>>  @DocumentId
>>  Integer id;
>>  @Field(index = Index.TOKENIZED, name="chainName")
>>  String name = "NULLNULNUL";
>>  //getter and setter
>>  }
>>
>> so this means to always there is will be chain along with Recipe object
>> with
>> has default name to "NULLNULNUL" and that wil be indexed..
>> We dont want to do that, Recipe is our persistence object and we hate to
>> do
>> that.
>>
>> -Amar
>>
>>
>> On Tue, Dec 23, 2008 at 8:05 PM, Erick Erickson <[hidden email]
>> >wrote:
>>
>>  How do you intend to index these? Lucene will not
>>> index objects for you. You have to break the object
>>> down into a series of fields. At that point you can
>>> substitute whatever you want.
>>>
>>> Best
>>> Erick
>>>
>>> On Tue, Dec 23, 2008 at 3:36 AM, <[hidden email]> wrote:
>>>
>>> > Hi Aaron Schon/EricK,
>>> >
>>> > That really make sense to me but it really seems easy if is the string
>>> > object. See the object structure I have it below hopefully that gives
>>> you
>>> > some idea
>>> >
>>> > class Recipe {
>>> > @DocumentId
>>> > Integer id;
>>> > @IndexedEmbedded
>>> > Chain chain;
>>> > //gettter and setter
>>> > }
>>> >
>>> > class Chain {
>>> > @DocumentId
>>> > Integer id;
>>> > @Field(index = Index.TOKENIZED, name="chainName")
>>> > String name;
>>> > //getter and setter
>>> > }
>>> >
>>> > I am creating index on the recipe object. and for some recipe.m_chain
>>> would
>>> > be null. So can you tell me how do I assign the value "NULLNULNULLNULL"
>>> for
>>> > object chain in recipe.
>>> >
>>> > I also was thinking if #FieldBridge help me this way. My plan was to
>>> have
>>> > default value where chain is null as you mentioned. but it does not
>>> seems
>>> > to
>>> > work for null values.
>>> >
>>> > Please suggest
>>> >
>>> > Thanks in advance.
>>> > -Amar
>>> >
>>> > On Tue, Dec 23, 2008 at 12:04 AM, Aaron Schon <[hidden email]>
>>> > wrote:
>>> >
>>> > > I would second Erick's recommendation - create an arbitrary
>>> > representation
>>> > > for NULL such as "NULL" (if you are certain the term "NULL" does not
>>> > occur
>>> > > in actual docs. Alternatively, use "NULLNULNULLNULL" or something to
>>> that
>>> > > effect.
>>> > >
>>> > >
>>> > >
>>> > > ----- Original Message ----
>>> > > From: Erick Erickson <[hidden email]>
>>> > > To: [hidden email]
>>> > > Sent: Monday, December 22, 2008 8:58:21 AM
>>> > > Subject: Re: Lucene search problem
>>> > >
>>> > > Try searching the mailing list archives for a fuller discussion, but
>>> > > the short answer is usually to index an unique value for your
>>> > > "null" entries, then search on that, something totally
>>> > > outrageous like, say AAABBBCCCDDDEEEFFF.
>>> > >
>>> > > Alternatively, you could create, at startup time, a
>>> > > Filter of all the docs that *do* contain terms for the
>>> > > field in question, flip the bits and use the Filter in your
>>> > > searches. (Hint: see TermDocs/TermEnum)
>>> > >
>>> > > Best
>>> > > Erick
>>> > >
>>> > > On Mon, Dec 22, 2008 at 8:11 AM, <[hidden email]> wrote:
>>> > >
>>> > > > Hi,
>>> > > >
>>> > > > I have problem with lucene search, I am quite new to this. Can some
>>> > body
>>> > > > help or just push me to who can please.
>>> > > >
>>> > > > Problem what I am facing we need search for object whose attribute
>>> > > "chain"
>>> > > > contaning null, but lucene does not help indexing the null values..
>>> > > >
>>> > > > how can I achieve this, or please guide me the alternative way of
>>> doing
>>> > > > this.
>>> > > >
>>> > > > Thanks in advance.
>>> > > > -Amar
>>> > > >
>>> > >
>>> > >
>>> > >
>>> > >
>>> > >
>>> > > ---------------------------------------------------------------------
>>> > > To unsubscribe, e-mail: [hidden email]
>>> > > For additional commands, e-mail: [hidden email]
>>> > >
>>> > >
>>> >
>>> >
>>> > --
>>> > Amar Sannaik | Programmer | ATHARVA LIBSON Software Pvt Ltd.,
>>> > # 9886476270, [hidden email]
>>> >
>>>
>>>
>>
>>
>>
>
>
> --
> Aleksander M. Stensby
> Senior software developer
> Integrasco A/S
> www.integrasco.no
>
> Please consider the environment before printing all or any of this e-mail
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>