This is the base class for any Processor implementations. Processor classes are developed to
read source data as referenced (or stored temporarily) by
Each Processor implementation tackles a specific type of location where source data can be
read from, such as a filesystem for
Processor objects are handled by the loading framework automatically and custom code should never instantiate a Processor object or call any of its methods directly.
This method is called from
ProcessListElementand ProcessVirtualListElementright before calling on the Indexer to process the data read by this Processor instance. It returns the language (two-letter ISO code) for the source being processed, if there is any means to derive it from known facts about the source. If no language can be derived with enough certainty, this method returns "".
The default implementation looks if there is a $$$IKPLANGUAGEFIELDNAME parameter defined pointing to a metadata field containing the language code. Subclasses may override and/or extend this method if they have access to additional information.
Subclasses should override this method to identify those metadata keys that are calculated or extracted by this Processor implementation and will be registered for every source processed by calling
SetCurrentMetadataValuesduring the FetchSourceexecution.
This is the primary method that will be called from the
%iKnow.Source.Loaderfor each source identified by the %iKnow.Source.Listerobjects involved in this loading process. It will buffer what's read in the FetchSourceimplementation, trigger the %iKnow.Source.Converterif one is configured, and then instruct the Indexer to process the resulting plain text, directing its output to the appropriate DirectInput object.
Also, this method will gather any metadata set by the Lister, combine it with metadata calculated by the Processor or Converter and push it to the DirectInput object as well.
ProcessListElement, but for Virtual Sources.
Registers the Converter to be used by this Processor onwards.
NOTE: If this method is overridden by a subclass, it should make sure to either call this method via ##super, or set