Yeah I need something like:
(id:1 and maxhits:1) OR (id:2 and maxits:1).. something crazy like that..

I'm not sure how I can hit solr once. If I do try and do them all in one big OR 
query then I'm probably not going to get a hit for each ID. I would need to 
request probably 1000 documents to find all 100 and even then there's no 
guarantee and no way of knowing how deep to go.

-Kallin Nagelberg

-----Original Message-----
From: dar...@ontrenet.com [mailto:dar...@ontrenet.com] 
Sent: Thursday, May 20, 2010 12:27 PM
To: solr-user@lucene.apache.org
Subject: RE: seemingly impossible query

I see. Well, now you're asking Solr to ignore its prime directive of
returning hits that match a query. Hehe.

I'm not sure if Solr has a "unique" attribute.

But this sounds, to me, like you will have to filter the results yourself.
But at least you hit Solr only once before doing so.

Good luck!

> Thanks Darren,
>
> The problem with that is that it may not return one document per id, which
> is what I need.  IE, I could give 100 ids in that OR query and retrieve
> 100 documents, all containing just 1 of the IDs.
>
> -Kallin Nagelberg
>
> -----Original Message-----
> From: dar...@ontrenet.com [mailto:dar...@ontrenet.com]
> Sent: Thursday, May 20, 2010 12:21 PM
> To: solr-user@lucene.apache.org
> Subject: Re: seemingly impossible query
>
> Ok. I think I understand. What's impossible about this?
>
> If you have a single field name called <id> that is multivalued
> then you can retrieved the documents with something like:
>
> id:1 OR id:2 OR id:56 ... id:100
>
> then add limit 100.
>
> There's probably a more succinct way to do this, but I'll leave that to
> the experts.
>
> If you also only want the documents within a certain time, then you also
> create a <time> field and use a conjunction (id:0 ...) AND time:NOW-1H
> or something similar to this. Check the query syntax wiki for specifics.
>
> Darren
>
>
>> Hey everyone,
>>
>> I've recently been given a requirement that is giving me some trouble. I
>> need to retrieve up to 100 documents, but I can't see a way to do it
>> without making 100 different queries.
>>
>> My schema has a multi-valued field like 'listOfIds'. Each document has
>> between 0 and N of these ids associated to them.
>>
>> My input is up to 100 of these ids at random, and I need to retrieve the
>> most recent document for each id (N Ids as input, N docs returned). I'm
>> currently planning on doing a single query for each id, requesting 1
>> row,
>> and caching the result. This could work OK since some of these ids
>> should
>> repeat quite often. Of course I would prefer to find a way to do this in
>> Solr, but I'm not sure it's capable.
>>
>> Any ideas?
>>
>> Thanks,
>> -Kallin Nagelberg
>>
>
>

Reply via email to