Hi Joel, Any idea from when multi value field is supported for gatherNodes ? I am using version 6.5 ? Is it already there ?
Kindly update, Ganesh On Sat, Mar 11, 2017 at 7:51 AM Joel Bernstein <joels...@gmail.com> wrote: > 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 <pra...@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 > > >