Hi Erick,
Thanks for your help...
I have successfully implemented using custom HitCollector....
- Bhavin pandya
----- Original Message -----
From: "Erick Erickson" <[EMAIL PROTECTED]>
To: <java-user@lucene.apache.org>; "Bhavin Pandya" <[EMAIL PROTECTED]>
Sent: Tuesday, November 21, 2006 8:58 PM
Subject: Re: is there any way to find unique records ?
Ok, I think I get it now. You're right that you probably don't want to
iterate the Hits object since that has performance issues once you get
beyond 100 docs or so. Although, I don't know how big your result sets
are.
If they are guaranteed to be small, this may not matter.
I'm guessing you want to implement a custom HitCollector. That has it's
own
cautions about calling, say, IndexReader.document(id) for each hit, so you
probably want to use TermDocs object. seek() and skipTo() and doc() are
your
friends. Although I'd try the simple way of just calling
IndexReader.document(id) first just to see if the performance was
acceptable. Be sure you're looking at a truly representative data set
though
<G>...
Hope this helps
Erick
On 11/21/06, Bhavin Pandya <[EMAIL PROTECTED]> wrote:
Hi Erick,
> If your asking for a list of all the unique values for a particular
field,
> see TermDocs and/or TermEnum which will allow you to look at, say, all
the
> values stored for some field. A trick here is to seek (new
> Term("field",
> ""));. By putting nothing in the value, you effectively enumerate them
> all,
> something that I didn't find obvious
I think your above solution is very near to what i am looking for ,
But little bit different way...
here is what i am planning to do...
Suppose my index has four fields "product-title" , "product-desc" ,
"category" and "FLAG" ( Fieldname FLAG has value "true" for each n
every
doc in index ...just added for iteration purpose )
At search time.. .
query = +(product-title:nokia) +(product-desc:nokia)
Hits hits = searcher.search(query);
I want to fetch unique "category" from above hits object...
But i dont want to iterate through Hits object....
Now As per your suggestions, I can do something like this...
TermEnum enum = termDocs(new Term("FLAG","true")
But it will return enumeration of all the document which is in
index...But
i
want enumeration of all the document which is relevant to "nokia"...
How to . . ?
Thanks
- Bhavin pandya
----- Original Message -----
From: "Erick Erickson" <[EMAIL PROTECTED]>
To: <java-user@lucene.apache.org>; "Bhavin Pandya" <[EMAIL PROTECTED]>
Sent: Tuesday, November 21, 2006 7:01 PM
Subject: Re: is there any way to find unique records ?
> I don't think I understand what "only unique records from a single
field"
> means. If it's a unique value in a filed, there'll only be one
> document
> in
> the hits object and there's no cost to iterating, so I doubt that's
> what
> you
> mean.
>
> If your asking for a list of all the unique values for a particular
field,
> see TermDocs and/or TermEnum which will allow you to look at, say, all
the
> values stored for some field. A trick here is to seek (new
> Term("field",
> ""));. By putting nothing in the value, you effectively enumerate them
> all,
> something that I didn't find obvious.
>
> If neither of these are close to the mark, perhaps you could provide
more
> detail.
>
> Best
> Erick
>
> On 11/21/06, Bhavin Pandya <[EMAIL PROTECTED]> wrote:
>>
>> Hi,
>> In lucene, is there any way to find only unique records from a single
>> field ..?
>>
>> otherwise unnecessary i have to itereate through Hits and find out
>> unique...
>>
>> plz help..
>>
>> - Bhavin pandya
>>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]