Saturday, March 17, 2018

FW: Using multi valued field in solr cloud Graph Traversal Query

-----Original Message-----
From: Jan Høydahl [mailto:jan.asf@cominvent.com]
Sent: 16 March 2018 17:36
To: solr-user@lucene.apache.org
Subject: Re: Using multi valued field in solr cloud Graph Traversal Query

> Adding multi-value field support is a fairly high priority so I would
> expect this to be coming in a future release.

I got this question from a client of mine as well. Trying to find a JIRA
issue for multi value support, is there one?

--
Jan Høydahl, search solution architect
Cominvent AS - www.cominvent.com

> 11. mar. 2017 kl. 03:21 skrev Joel Bernstein <joelsolr@gmail.com>:
>
> Currently gatherNodes only works on single value fields. You can seed
> a gatherNodes with a facet() expression which works with multi-value
> fields, but after that it only works with single value fields.
>
> So you would have to index the data as a graph like this:
>
> id, concept1, participant1
> id, concept1, participant2
> id, concept2, participant1
> id, concept2, participant3
> id, concept3, participant2
> ....
>
> Then you walk the graph like this:
>
> gatherNodes(mydata,
> gatheNodes(mydata, walk="concept1->conceptID",
> gather="participantID")
> walk="node->particpantID",
> gather="conceptID")
>
> This is a two step graph expression:
> 1) Gathers all the participantID's where concept1 is in the conceptID
> field.
> 2) Gathers all the conceptID's for the participantID's gathered in step 1.
>
> Let me know if you have other questions about how to structure the
> data or run the queries.
>
>
>
>
>
>
>
>
> Adding multi-value field support is a fairly high priority so I would
> expect this to be coming in a future release.
>
>
>
>
> Joel Bernstein
> http://joelsolr.blogspot.com/
>
> On Fri, Mar 10, 2017 at 5:15 PM, Pratik Patel <pratik@semandex.net> wrote:
>
>> I am trying to do a graph traversal query using gatherNode function.
>> I am seeding a streaming expression to get some documents and then I
>> am trying to map their ids(conceptid) to a multi valued field
>> "participantIds" and gather nodes.
>>
>> Here is the query I am doing.
>>
>>
>> gatherNodes(collection1,
>>> search(collection1,q="*:*",fl="conceptid",sort="conceptid
>>> asc",fq=storeid:"524efcfd505637004b1f6f24",fq=tags:"Project"),
>>> walk=conceptid->participantIds,
>>> gather="conceptid")
>>
>>
>> The field participantIds is a multi valued field. This is the field
>> which holds connections between the documents. When I execute this
>> query, I get exception as below.
>>
>>
>> { "result-set": { "docs": [ { "EXCEPTION":
>> "java.util.concurrent.ExecutionException: java.lang.RuntimeException:
>> java.io.IOException: java.util.concurrent.ExecutionException:
>> java.io.IOException: -->
>> http://169.254.40.158:8081/solr/collection1_shard1_replica1/:can not
>> sort on multivalued field: participantIds", "EOF": true,
>> "RESPONSE_TIME": 15 } ] } }
>>
>>
>> Does this mean you can not look into multivalued fields in graph
>> traversal query? In our solr index, we have documents having
>> "conceptid" field which is id and we have participantIds which is a
>> multivalued field storing connections of that documents to other
>> documents. I believe we need to have one field in document which
>> stores connections of that document so that graph traversal is
>> possible. If not, what is the other the way to index graph data and
>> use graph traversal. I am trying to explore graph traversal and am new to
it. Any help would be appreciated.
>>
>> Thanks,
>> Pratik
>>

No comments:

Post a Comment