Problem getting latest version metadata filter working

I am trying to use the metadata filter below with find-ishDocumentObj in PowerShell and it returns zero docs. If I block the last line that defines the version as 'latest' it works but returns multiple ishmodules. Can someone tell me what I am doing wrong? Does 'latest' not work with a metadata filter? 

 

$metadataFilter =

Set-IshMetadataFilterField -IshSession $ishSession -Name "DOC-LANGUAGE" -Level "Lng" -FilterOperator "equal" -Value "en-US" |

Set-IshMetadataFilterField -IshSession $ishSession -Name "CREATED-ON" -Level "version" -FilterOperator "greaterthan" -Value "14/6/2016 00:00:00" |

Set-IshMetadataFilterField -IshSession $ishSession -Name "CREATED-ON" -Level "version" -FilterOperator "lessthan" -Value "14/12/2017 00:00:00" |

Set-IshMetadataFilterField -IshSession $ishSession -Name "VERSION" -Level "version" -FilterOperator "equal" -Value "latest"

 

 

 

 

Parents
  • Dear Rick,

    I think latest for the MetadataFilterField definitions should be changed toward latestafterfilter and the -FilterOperator which is optional should be removed from the Set-IshMetadataFilterField call.


    So I think the statement should be

    Set-IshMetadataFilterField -IshSession $ishSession -Name "VERSION" -Level "version" -Value "latestafterfilter"

    More information about the behavior of the version numbers can be found in the documentation at the following page:
    docs.sdl.com/.../GUID-DD81BBD6-19DB-45BE-B86B-0248C4E2FA68
    (Understanding how version numbers behave)

    Kind Regards,

    Raf
  • Thank Raf, I made the change but it still returns zero. With the code below, the count returned is 124 if I remove the Version filter field. With the version filter field, it returns zero. If it returns the latest, does that mean that the topics being returned are not the latest, so it returns zero?

    $metadataFilter = Set-IshMetadataFilterField -IshSession $ishSession -Name "DOC-LANGUAGE" -Level "Lng" -FilterOperator "equal" -Value "en-US"  |

    Set-IshMetadataFilterField -IshSession $ishSession -Name "CREATED-ON" -Level "version" -FilterOperator "greaterthan" -Value "14/6/2016 00:00:00" |

    Set-IshMetadataFilterField -IshSession $ishSession -Name "CREATED-ON" -Level "version" -FilterOperator "lessthan" -Value "30/6/2016 00:00:00" |

    Set-IshMetadataFilterField -IshSession $ishSession -Name "VERSION" -Level "version" -Value "latestafterfilter"

    $requestedMetadata = Set-IshRequestedMetadataField -IshSession $ishSession -Name 'FTITLE' -Level "logical" |

    Set-IshRequestedMetadataField -IshSession $ishSession -Name 'CREATED-ON' -Level "Version" |

    Set-IshRequestedMetadataField -IshSession $ishSession -Name 'FAUTHOR' -Level "Lng" |

    Set-IshRequestedMetadataField -IshSession $ishSession -Name 'VERSION' -Level "Version"

    $topicsFound = Find-IshDocumentObj -IshSession $ishSession -IshTypeFilter ishModule -MetadataFilter $metadataFilter -RequestedMetadata $requestedMetadata

    $topicsFound.Count

  • The short answer is, not possible.

    The longer answer... The PowerShell ISHRemote package is in the end a convenience to allow automation on top of the API. Now looking somewhat deeper into Find-IshDocumentObj, it relies on DocumentObj25.Find which has a metadataFilter parameter. However the metadataFilter doesn't support the version keywords as described on TD13SP1 - Understanding how version numbers behave. Those version keywords - like latestafterfilter - are only supported on API functions that have a direct version parameter and not an indirect version filter as presented through the metadataFilter parameter.

    So just thinking along... I see you pass version-level CREATED-ON fields so you get multiple hits on that, then you can filter on VERSION client-side.

Reply Children