Say I have 2 fields. x and y.

Following are their schema definitions:

<field name="x" type="string" stored="true" indexed="true" multiValued=
"true" />
<field name="y" type="string" stored="true" indexed="true" multiValued=
"true" />
Also, there is this copy field, that copies the values from y to x.
<copyField source="y" dest="x"/>

If I make the following indexing request (non-atomic regular indexing
request)

{
    "id": "doc",
    "x": ["a", "b"],
    "y": ["c", "d"]
}

then I end up with the following document:
{
    "id": "doc",
    "x": ["a", "b", "c", "d"],
    "y": ["c", "d"]
}

But now, if I make the following indexing request (atomic update),
{
    "id": "doc",
    "y": { "set" : [ "e", "f" ] }
}

I end up with the following document:
{
    "id": "doc",
    "x": [ "e", "f" ],
    "y": [ "e", "f" ]
}

What I instead really want, is the the following document
{
    "id": "doc",
    "x": [ "a", "b", "e", "f" ],
    "y": [ "e", "f" ]
}

I know that I am violating the atomic indexing constraint that requires the
copy field destinations to be stored=false but I need the field x to be
stored=true.
Is there any way to handle this in Solr or I will need to cook up my own
external solution in some way?

Thanks in advance!

Reply via email to