Block Join Parent Query across children docs

2014-03-28 Thread mertens
Hello Solr Users,

In my system I have multiple records belonging to users, and I need to
perform a query to find users who have records that meet the criteria of
that query. For example, if my record has the field "search" and I query for
search:((item1 AND item2) NOT item3), I want to find all users that have one
or more records with item1 and one or more records with item2 but no records
containing item3.

I have investigated the block join parent query which comes close to the
functionality that I need, but it appears to apply the entire query to each
individual child document, rather than across all child documents.

At the moment the only solutions I can think of are to combine all the user
records into one giant document for each user or do some sort of OR query to
get all documents with partial matches for each user and then manually
verify that my result document set satisfies my criteria. Neither of these
solutions sounds very attractive to me. Does anyone else have any advice or
recommendations for this scenario?

Thanks,
Luke



--
View this message in context: 
http://lucene.472066.n3.nabble.com/Block-Join-Parent-Query-across-children-docs-tp4127637.html
Sent from the Solr - User mailing list archive at Nabble.com.


Re: Block Join Parent Query across children docs

2014-04-02 Thread mertens
Hi Mikhail,

Thanks for your response. Here is an example of what I'm trying to do. If I
had the following documents:


  10
  parent
  User1
  
11
item1, item6
  
  
12
item2, item7
  
  
13
item3, item8
  


  20
  parent
  user2
  
21
item1, item6
  
  
22
item2, item7
  
  
23
item8
  


I would like to do a search for users with item1 and item2 and not item3,
and that query should only return user2. I have tried this with a block
join query with solr 4.6.1 and it does not work the way I need it to. If
you have any ideas let me know.

Thanks,
Luke


On Sat, Mar 29, 2014 at 1:46 PM, Mikhail Khludnev [via Lucene] <
ml-node+s472066n4127896...@n3.nabble.com> wrote:

> Hello Luke,
>
> If I get you right, you need to combine parent (block join) queries e.g
> users who have a record with item1 AND users who have a record with item2.
>
> Does it make sense? If it does, do you need to figure out a syntax?
> 28.03.2014 14:19 пользователь "mertens" <[hidden 
> email]<http://user/SendEmail.jtp?type=node&node=4127896&i=0>>
> написал:
>
> > Hello Solr Users,
> >
> > In my system I have multiple records belonging to users, and I need to
> > perform a query to find users who have records that meet the criteria of
> > that query. For example, if my record has the field "search" and I query
> > for
> > search:((item1 AND item2) NOT item3), I want to find all users that have
> > one
> > or more records with item1 and one or more records with item2 but no
> > records
> > containing item3.
> >
> > I have investigated the block join parent query which comes close to the
> > functionality that I need, but it appears to apply the entire query to
> each
> > individual child document, rather than across all child documents.
> >
> > At the moment the only solutions I can think of are to combine all the
> user
> > records into one giant document for each user or do some sort of OR
> query
> > to
> > get all documents with partial matches for each user and then manually
> > verify that my result document set satisfies my criteria. Neither of
> these
> > solutions sounds very attractive to me. Does anyone else have any advice
> or
> > recommendations for this scenario?
> >
> > Thanks,
> > Luke
> >
> >
> >
> > --
> > View this message in context:
> >
> http://lucene.472066.n3.nabble.com/Block-Join-Parent-Query-across-children-docs-tp4127637.html
> > Sent from the Solr - User mailing list archive at Nabble.com.
> >
>
>
> --
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://lucene.472066.n3.nabble.com/Block-Join-Parent-Query-across-children-docs-tp4127637p4127896.html
>  To unsubscribe from Block Join Parent Query across children docs, click
> here<http://lucene.472066.n3.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4127637&code=bG1lcnRlbnNAZ21haWwuY29tfDQxMjc2Mzd8LTU0NDAxMzQzMw==>
> .
> NAML<http://lucene.472066.n3.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>




--
View this message in context: 
http://lucene.472066.n3.nabble.com/Block-Join-Parent-Query-across-children-docs-tp4127637p4128554.html
Sent from the Solr - User mailing list archive at Nabble.com.

Re: Block Join Parent Query across children docs

2014-04-07 Thread mertens
Thanks Hoss, with the filter queries it works. I was trying to use a normal
query from Mikhail's blog that looked like this:

q={!parent which=type_s:parent}+search_t:item1 +search_t:item2
-search_t:item3

That query doesn't work for me but the filter query does just what I want.

ps last years stump the chump was great, and it looks like you're still not
stumped.

Cheers,
Luke


On Thu, Apr 3, 2014 at 1:39 AM, Chris Hostetter-3 [via Lucene] <
ml-node+s472066n4128734...@n3.nabble.com> wrote:

>
> : Thanks for your response. Here is an example of what I'm trying to do.
> If I
> : had the following documents:
>
> what you are attempting is fairly trivial -- you want to query for all
> parent documents, then kapply 3 filters:
>
>  * parent of a child matching item1
>  * parent of a child matching item2
>  * not a parent of a chile matching item3
>
> Part of your problem may be that (in your example you posted anywayway)
> you appear to be trying to use a *string* field for listing multiple terms
> with commas and then seem to want to match on those individual terms --
> that's not going to work.  either make your string field a true
> multivalued field, or use a text field with tokenization.
>
> With the modified example data you provided below (using search_t instead
> of search_s) this query seems to do exactly waht you want...
>
> http://localhost:8983/solr/select?p_filt=type_s:parent&q=*:*&fq={!parent%20which=$p_filt}search_t:item2&fq={!parent%20which=$p_filt}search_t:item1&fq=-{!parent%20which=$p_filt}search_t:item3
>
>
>  q = *:*
> p_filt = type_s:parent
> wt = json
> fq =  {!parent which=$p_filt}search_t:item2
> fq =  {!parent which=$p_filt}search_t:item1
> fq = -{!parent which=$p_filt}search_t:item3
>
>
> -Hoss
> http://www.lucidworks.com/
>
>
> --
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://lucene.472066.n3.nabble.com/Block-Join-Parent-Query-across-children-docs-tp4127637p4128734.html
>  To unsubscribe from Block Join Parent Query across children docs, click
> here
> .
> NAML
>




--
View this message in context: 
http://lucene.472066.n3.nabble.com/Block-Join-Parent-Query-across-children-docs-tp4127637p4129588.html
Sent from the Solr - User mailing list archive at Nabble.com.

Re: Block Join Parent Query across children docs

2014-04-07 Thread mertens
Yeah, that works also for me. Thanks Mikhail.


On Mon, Apr 7, 2014 at 12:42 PM, Mikhail Khludnev [via Lucene] <
ml-node+s472066n4129604...@n3.nabble.com> wrote:

> for sake of completeness, here is the same query w/o fq
>
> q=+{!parent which=type_s:parent}search_t:item1 +{!parent
> which=type_s:parent}search_t:item2 -{!parent
> which=type_s:parent}search_t:item3
>
> here is more detail about the first symbol magic
> http://www.mail-archive.com/solr-user@.../msg96796.html<http://www.mail-archive.com/solr-user@lucene.apache.org/msg96796.html>
>
>
>
> On Mon, Apr 7, 2014 at 1:23 PM, mertens <[hidden 
> email]<http://user/SendEmail.jtp?type=node&node=4129604&i=0>>
> wrote:
>
> > Thanks Hoss, with the filter queries it works. I was trying to use a
> normal
> > query from Mikhail's blog that looked like this:
> >
> > q={!parent which=type_s:parent}+search_t:item1 +search_t:item2
> > -search_t:item3
> >
> > That query doesn't work for me but the filter query does just what I
> want.
> >
> > ps last years stump the chump was great, and it looks like you're still
> not
> > stumped.
> >
> > Cheers,
> > Luke
> >
> >
> > On Thu, Apr 3, 2014 at 1:39 AM, Chris Hostetter-3 [via Lucene] <
> > [hidden email] <http://user/SendEmail.jtp?type=node&node=4129604&i=1>>
> wrote:
> >
> > >
> > > : Thanks for your response. Here is an example of what I'm trying to
> do.
> > > If I
> > > : had the following documents:
> > >
> > > what you are attempting is fairly trivial -- you want to query for all
> > > parent documents, then kapply 3 filters:
> > >
> > >  * parent of a child matching item1
> > >  * parent of a child matching item2
> > >  * not a parent of a chile matching item3
> > >
> > > Part of your problem may be that (in your example you posted
> anywayway)
> > > you appear to be trying to use a *string* field for listing multiple
> > terms
> > > with commas and then seem to want to match on those individual terms
> --
> > > that's not going to work.  either make your string field a true
> > > multivalued field, or use a text field with tokenization.
> > >
> > > With the modified example data you provided below (using search_t
> instead
> > > of search_s) this query seems to do exactly waht you want...
> > >
> > >
> > http://localhost:8983/solr/select?p_filt=type_s:parent&q=*:*&fq={!parent%20which=$p_filt}search_t:item2&fq={!parent%20which=$p_filt}search_t:item1&fq=-{!parent%20which=$p_filt}search_t:item3
>
> > >
> > >
> > >  q = *:*
> > > p_filt = type_s:parent
> > > wt = json
> > > fq =  {!parent which=$p_filt}search_t:item2
> > > fq =  {!parent which=$p_filt}search_t:item1
> > > fq = -{!parent which=$p_filt}search_t:item3
> > >
> > >
> > > -Hoss
> > > http://www.lucidworks.com/
> > >
> > >
> > > --
> > >  If you reply to this email, your message will be added to the
> discussion
> > > below:
> > >
> > >
> >
> http://lucene.472066.n3.nabble.com/Block-Join-Parent-Query-across-children-docs-tp4127637p4128734.html
> > >  To unsubscribe from Block Join Parent Query across children docs,
> click
> > > here<
> >
> >
> > > .
> > > NAML<
> >
> http://lucene.472066.n3.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml
>
> > >
> > >
> >
> >
> >
> >
> > --
> > View this message in context:
> >
> http://lucene.472066.n3.nabble.com/Block-Join-Parent-Query-across-children-docs-tp4127637p4129588.html
>
> > Sent from the Solr - User mailing list archive at Nabble.com.
> >
>
>
>
> --
> Sincerely yours
> Mikhail Khludnev
> Principal Engineer,
> Grid Dynamics
>
> <http://www.griddynamics.com>
> <[hidden email] <http://user/SendEmail.jtp?type=node&node=4129604&i=2>>
>
>
> --
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://lucene.472066.n3.nabble.com/Block-Join-Parent-Query-across-children-docs-tp4127637p4129604.html
>  To unsubscribe from Block Join Parent Query across children docs, click
> here<http://lucene.472066.n3.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4127637&code=bG1lcnRlbnNAZ21haWwuY29tfDQxMjc2Mzd8LTU0NDAxMzQzMw==>
> .
> NAML<http://lucene.472066.n3.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>




--
View this message in context: 
http://lucene.472066.n3.nabble.com/Block-Join-Parent-Query-across-children-docs-tp4127637p4129609.html
Sent from the Solr - User mailing list archive at Nabble.com.