SearchQuery
To specify full-text queries, an XML structure with the search criteria needs to be supplied.
XML structure
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Schema-ISHSearchQuery" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="ishquery">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:group ref="AndOrGroup" minOccurs="1" maxOccurs="1"/>
<xs:element ref="ishsort" minOccurs="0" maxOccurs="1"/>
<xs:element ref="ishobjectfilters" minOccurs="0" maxOccurs="1" />
</xs:choice>
</xs:complexType>
</xs:element>
<xs:group name="AndOrGroup">
<xs:choice>
<xs:element ref="and" />
<xs:element ref="or"/>
</xs:choice>
</xs:group>
<xs:element name="and">
<xs:complexType>
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element ref="or" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="and" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref ="ishfield" minOccurs="0" maxOccurs="unbounded" />
</xs:choice>
</xs:complexType >
</xs:element>
<xs:element name="or">
<xs:complexType>
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element ref="or" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="and" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="ishfield" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType >
</xs:element>
<xs:element name="ishfield">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="level" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="logical"/>
<xs:enumeration value="version"/>
<xs:enumeration value="lng"/>
<xs:enumeration value="none"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="ishoperator" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="contains"/>
<xs:enumeration value="equal"/>
<xs:enumeration value="notequal"/>
<xs:enumeration value="greaterthan"/>
<xs:enumeration value="lessthan"/>
<xs:enumeration value="greaterthanorequal"/>
<xs:enumeration value="lessthanorequal"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="ishvaluetype" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value=""/>
<xs:enumeration value="value"/>
<xs:enumeration value="element"/>
<xs:enumeration value="id"/>
<xs:enumeration value="label"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="ishsort">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element ref="ishsortfield"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ishsortfield">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="level" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="logical"/>
<xs:enumeration value="version"/>
<xs:enumeration value="lng"/>
<xs:enumeration value="none"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="ishorder" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="d"/>
<xs:enumeration value="a"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name ="ishobjectfilters">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref ="ishversionfilter" minOccurs="1" maxOccurs="1" />
<xs:element ref="ishtypefilter" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ishlanguagefilter" minOccurs="1" maxOccurs="unbounded" />
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="ishversionfilter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="AllVersions" />
<xs:enumeration value="LatestVersion" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ishtypefilter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="ISHModule" />
<xs:enumeration value="ISHMasterDoc" />
<xs:enumeration value="ISHLibrary" />
<xs:enumeration value="ISHTemplate" />
<xs:enumeration value="ISHIllustration" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ishlanguagefilter" type="xs:string"/>
</xs:schema>
- The element
ishversionfiltershould appear once in a query. The only allowed values are eitherLatestVersionorAllVersions. - The element
ishtypefiltercontains the object types you want to narrow your search in. Each element should contain only one of these listed values:ISHMasterDoc,ISHModule,ISHIllustration,ISHLibraryorISHTemplate. - The element
ishlanguagefiltercontains the languages you want to narrow your search to. We expect you to submit at least one language, most probably the configured user language.
Features, tips and tricks
Dates must be specified in the DD/MM/YYYY format. The ishoperator can contain the entity values for equal, notequal, greaterthan, lessthan, greaterthanorequal, and lessthanorequal when the field is a number or date.
Overall, the ishoperator's default is contains.
If you need to specify multiple values for one field, you can use ', (comma-space), which will then be treated as an accrue operator for this field.
Special Metadata Fields
The full-text search engine combines searching on file content and metadata. To allow searching both content and meatdata, a special field named ISHANYWHERE is available.
Another special field is ISHSCORE, which is implicitly used as default sort, and cannot be retrieved. This field holds the percentage of relevance for a hit.
Example
<ishquery>
<and>
<or>
<ishfield name='FSTATUS' level='lng' ishoperator='equal'>Translated</ishfield>
<ishfield name='FAUTHOR' level='lng' ishoperator='equal' ishvaluetype='label'>Dave De Meyer</ishfield>
</or>
<ishfield name='ISHANYWHERE' level='none' ishoperator='contains'>change oil filter</ishfield>
<ishfield name='FDUEDATE' level='version' ishoperator='lessthan'>20061027</ishfield>
</and>
<ishsort>
<ishsortfield name='ISHSCORE' level='none' ishorder="d"/>
<ishsortfield name='FSTATUS' level='lng' ishorder="a"/>
<ishsortfield name='FAUTHOR' level='lng' ishorder="a"/>
</ishsort>
<ishobjectfilters>
<ishversionfilter>LatestVersion</ishversionfilter>
<ishtypefilter>ISHModule</ishtypefilter>
<ishtypefilter>ISHMasterDoc</ishtypefilter>
<ishlanguagefilter>en</ishlanguagefilter>
<ishlanguagefilter>nl</ishlanguagefilter>
</ishobjectfilters>
</ishquery>