/// <summary> /// Prüfe das Element zuvor, bevor man es zum Indexieren schickt. /// <para>Es werden mehrere Parameter geprüft. /// <list type="number"> /// <item>Soll das Element überhaupt indexiert werden: Soll diese Klasse indexiert werden? Sind alle Pflichtfelder vorhanden? Ist irgendein Ausnahmewert vorhanden?</item> /// <item>Ist das Element bereits indexiert?</item> /// <item>Hat sich der Inhalt des Elements geändert? </item> /// </list> /// </para> /// </summary> /// <param name="element">Das Element, das indexiert werden soll.</param> internal async Task SendToIndexerAsync(Element element) { bool isAlreadyIndexed = IsAlreadyIndexed(element); bool isForbidden = RemoveWhenForbidden(element, isAlreadyIndexed); if (isForbidden) { return; } using ElementLogContext context = new(); bool hasContentChanged = HasContentChanged(element); bool isIndexingNeeded = RemoveWhenChanged(element, isAlreadyIndexed, hasContentChanged, context); if (isIndexingNeeded == false) { return; } _log.Info(LocalizationService.FormatResourceString("CrawlerIndexerInterfaceMessage03", element.Id)); bool isIndexingSuccess = await _indexer.AddElementToIndexAsync(element); MarkElementFound(element, context, isIndexingSuccess); }