Is it possible to join on multivalue fields using the crossCollection join
method?
v8.11
Im getting back zero results when trying to join on a multivalue field:
Setup Collection1{
object_id: plong (docvalues, not stored, indexed)
object_ids: plongs (docvalues, not stored, indexed, multivalued)
}
Docs [
{id:<uuid1>, object_id:1}, //shard1
{id:<uuid2>, object_id:2}, //shard2
{id:<uuid3>, object_id:3}, //shard2
{id:<uuid4>, object_ids:[1,3]}, //shard1
{id:<uuid5>, object_ids:[3,2]}, //shard2
]
Query:
&q=object_id:3
&fl=*,related:[subquery]
&related.q=
{!join method=crossCollection from=object_ids to=object_id
fromIndex=collection1}{!terms f=object_ids v=$row.object_id}
I tried the same query using a single value field (everything else
configured the same, created new single value fields for testing) and
received the expected results:
Setup Collection1{
object_id: plong (docvalues, not stored, indexed)
object_ids: plongs (docvalues, not stored, indexed, multivalued)
object_src_id: (same as object_id)
object_dest_id: (same as object_id)
}
Docs [
{id:<uuid1>, object_id:1}, //shard1
{id:<uuid2>, object_id:2}, //shard2
{id:<uuid3>, object_id:3}, //shard2
{id:<uuid4>, object_ids:[1,3], object_src_id:1, object_dest_id:3},
//shard1
{id:<uuid5>, object_ids:[3,2], object_src_id:3, object_dest_id:2},
//shard2
]
&q=object_id:3
&fl=*,related:[subquery]
&related.q=
{!join method=crossCollection from=object_id_src to=object_id
fromIndex=collection1}{!terms f=object_ids v=$row.object_id}
I'm using a single collection that has two shards and running in solrcloud
mode.
Collection1/query:
&q=object_id:3
&fl=*,related:[subquery]
&related.q=
{!join method=crossCollection from=object_ids to=object_id
fromIndex=collection1}{!terms f=object_ids v=$row.object_id}