Motivation

In order to further narrow down the search results when doing searching we can apply filters to the result. Performance wise, filters give the benefit that these can be cached separately and do not affect the score nor highlighting.

Example

Let’s say that we have three items which all have the metadata field event_type set to some value:

PUT /item?content=metadata&field=event_type

<ItemSearchDocument xmlns="http://xml.vidispine.com/schema/vidispine">
    <field>
        <name>event_type</name>
        <value>*</value>
    </field>
</ItemSearchDocument>
CODE

Gives a result like this

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ItemListDocument xmlns="http://xml.vidispine.com/schema/vidispine">
    <hits>3</hits>
    <item id="VX-38" start="1200" end="1380">
        <metadata>
            <revision>VX-190,VX-189,VX-192,VX-191,VX-305</revision>
            <timespan start="1200" end="1380">
                <field uuid="91f8a252-2e0d-44b8-a9ce-751dd3bc4602" user="admin" timestamp="2022-05-16T12:41:01.132+02:00" change="VX-305">
                    <name>event_type</name>
                    <value uuid="d553b414-e6d2-4dba-984d-690fc8686d58" user="admin" timestamp="2022-05-16T12:41:01.132+02:00" change="VX-305">goal</value>
                </field>
            </timespan>
        </metadata>
        <timespan start="1200" end="1380"/>
    </item>
    <item id="VX-32" start="-INF" end="+INF">
        <metadata>
            <revision>VX-172,VX-174,VX-173,VX-175,VX-310</revision>
            <timespan start="-INF" end="+INF">
                <field uuid="d5e9b664-96be-48d7-a6a2-a81117295099" user="admin" timestamp="2022-05-16T14:03:16.351+02:00" change="VX-310">
                    <name>event_type</name>
                    <value uuid="f06e329a-d703-4d04-a9fb-e8ec4995a0a9" user="admin" timestamp="2022-05-16T14:03:16.351+02:00" change="VX-310">penalty</value>
                </field>
            </timespan>
        </metadata>
        <timespan start="-INF" end="+INF"/>
    </item>
    <item id="VX-31" start="-INF" end="+INF">
        <metadata>
            <revision>VX-171,VX-166,VX-168,VX-167,VX-311</revision>
            <timespan start="-INF" end="+INF">
                <field uuid="d461ac03-2610-4138-9260-e7b12ee83afe" user="admin" timestamp="2022-05-16T14:03:25.380+02:00" change="VX-311">
                    <name>event_type</name>
                    <value uuid="344ee679-cc8f-4c82-84ad-580ffd39b64f" user="admin" timestamp="2022-05-16T14:03:25.380+02:00" change="VX-311">icing</value>
                </field>
            </timespan>
        </metadata>
        <timespan start="-INF" end="+INF"/>
    </item>
</ItemListDocument>
XML

As seen in the response we get three items matching with the values goal penalty and icing. But in our case we are perhaps only interested in results matching either goal OR penalty. This can be achieved by adding a filter:

PUT /item?content=metadata&field=event_type

<ItemSearchDocument xmlns="http://xml.vidispine.com/schema/vidispine">
    <filter operation="OR" name="events">
        <field>
            <name>event_type</name>
            <value>penalty</value>
        </field>
        <field>
            <name>event_type</name>
            <value>goal</value>
        </field>
    </filter>
</ItemSearchDocument>
CODE

where we set the operation to operation=OR, which gives us the filtered result:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ItemListDocument xmlns="http://xml.vidispine.com/schema/vidispine">
    <hits>2</hits>
    <item id="VX-38" start="1200" end="1380">
        <metadata>
            <revision>VX-190,VX-189,VX-192,VX-191,VX-305</revision>
            <timespan start="1200" end="1380">
                <field uuid="91f8a252-2e0d-44b8-a9ce-751dd3bc4602" user="admin" timestamp="2022-05-16T12:41:01.132+02:00" change="VX-305">
                    <name>event_type</name>
                    <value uuid="d553b414-e6d2-4dba-984d-690fc8686d58" user="admin" timestamp="2022-05-16T12:41:01.132+02:00" change="VX-305">goal</value>
                </field>
            </timespan>
        </metadata>
        <timespan start="1200" end="1380"/>
    </item>
    <item id="VX-32" start="-INF" end="+INF">
        <metadata>
            <revision>VX-172,VX-174,VX-173,VX-175,VX-310</revision>
            <timespan start="-INF" end="+INF">
                <field uuid="d5e9b664-96be-48d7-a6a2-a81117295099" user="admin" timestamp="2022-05-16T14:03:16.351+02:00" change="VX-310">
                    <name>event_type</name>
                    <value uuid="f06e329a-d703-4d04-a9fb-e8ec4995a0a9" user="admin" timestamp="2022-05-16T14:03:16.351+02:00" change="VX-310">penalty</value>
                </field>
            </timespan>
        </metadata>
        <timespan start="-INF" end="+INF"/>
    </item>
</ItemListDocument>
CODE

Resources

https://apidoc.vidispine.com/latest/item/search.html?#filters

How to