abstract class %iFind.Transformation.Abstract extends %Library.RegisteredObject
This class abstracts a Word Transformation, an operation that translates a given actual word (as found in a document to be indexed) in some more "normalized" form. For example, stemming normalizes verbs, nouns and other conjugated words by transforming them into their base form (= normalized form). When a user then wants to search for a conjugated word, the search query will be processed by the same transformation used at indexing time and any conjugated form that maps to the same base form will be considered a match.
The transformation(s) to be applied at indexing time can be supplied through the TRANSFORMATIONSPEC index parameter (see %iFind.Index.Basic). At search time, the search option argument can be used to identify which transformation to apply to the search string. This can be either one of these transformation specification strings defined in the index parameter, an asterisk (*) to identify the default transformation of the index parameter or 0 to do an exact search on the non- transformed string.
Custom transformations can be created by implementing this class and implementing the Transform() method. This class can then be referred in the TRANSFORMATIONSPEC index parameter as described above.
Implementations of this class can optionally be parameterized through the pArguments string, which can be supplied through the TRANSFORMATIONSPEC index parameter. Transformations in this method should match the transformations in TransformObject(), notwithstanding the use of wildcards, or unexpected behavior can occur.
Implementations of this class can optionally be parameterized through the pArguments string, which can be supplied through the TRANSFORMATIONSPEC index parameter. This method takes in pString as a %DynamicObject, with the search string contained in pString.query. pString also contains a mask in pString.mask, where $c(0) in a character's slot represents a wildcard. For example, if pString.query = "?ab?" and pString.mask = "?ab_$c(0)", the first ? is a literal character, and the second is a wildcard. Unlike the Transform() method, pString may contain wildcards/ pTransformed may contain wildcards, but if so the user must implement pTransformed as a %DynamicObject, with the transformed search string stored in the "query" key. Note that a user MUST implement a mask for each transformaton in pTransformed that they wish to include wildcards with, or the wildcards in the transformations will be treated as escaped literals. Transformations in this method should match the transformations in Transform(), notwithstanding the use of wildcards, or unexpected behavior can occur.