serens
Returning Observer

ContentCreator: Indizierung einer externen und lesend eingebundenen Datenquelle nicht möglich

Hallo liebe Community,
momentan habe ich folgende Herausforderung, die mich bereits einiges an Recherche gekostet hat:

Der ContentCreator möchte eine externe Datenquelle, die lesend eingebunden ist, nicht indizieren. Das resultiert darin, dass man in einem FS_DATASET keine Einträge auswählen kann, wohingegen es im SiteArchitect problemlos möglich ist. Meine Recherche hat bisher ergeben, dass die Indizierung selber angestoßen werden muss, was allerdings nicht funktioniert:

  1. Manuelles Starten des Indizierung-Auftrages im ServerManager brachte keinen Erfolg.
  2. Ein Beanshell-Script zum Indizieren brachte ebenfalls keinen Erfolg.

Das Beanshell-Script (habe ich hier im Forum gefunden):

bsh % entity = context.selectedRow;

bsh % content2 = context.storeElement;

bsh % tableTemplate = content2.getTemplate();

bsh % dataset = tableTemplate.getDataset(entity);

bsh % context.connection.getService(de.espirit.firstspirit.access.AdminService.class).projectStorage.rebuildSearchIndex(dataset);

Meine Vermutung: Braucht FirstSpirit zum Indizieren eine spezielle Spalte oder einen Key? Anbei lege ich noch die Schema-Beschreibung bei:

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element dbName="xxxx_video_stg" name="root" temporal="0" version="4.0">

        <xs:complexType dbName="video_sets" name="VideoSets" readonly="1">

            <xs:sequence>

                <xs:element dbName="date" javaType="java.util.Date" length="19" name="Date" type="xs:date"/>

                <xs:element dbName="deleted" javaType="java.lang.Boolean" length="1" name="Deleted" nullable="1" type="xs:boolean"/>

                <xs:element dbName="filename" javaType="java.lang.String" length="255" name="Filename" type="xs:string"/>

                <xs:element dbName="is_external" javaType="java.lang.Boolean" length="1" name="IsExternal" type="xs:boolean"/>

                <xs:element dbName="mime_type" javaType="java.lang.String" length="255" name="MimeType" type="xs:string"/>

                <xs:element dbName="title" javaType="java.lang.String" length="255" name="Title" type="xs:string"/>

                <xs:element dbName="transcoded" javaType="java.lang.Boolean" length="1" name="Transcoded" nullable="1" type="xs:boolean"/>

                <xs:element dbName="video_set_id" javaType="java.lang.Long" length="19" name="VideoSetId" type="xs:long"/>

                <xs:element dbName="user_group_id" length="19" name="user_group_id" nullable="1" type="xs:long" visible="0"/>

                <xs:element dbName="user_id" length="19" name="user_id" nullable="1" type="xs:long" visible="0"/>

            </xs:sequence>

        </xs:complexType>

        <xs:key autoIncrement="1" dbName="primary" name="PRIMARY">

            <xs:selector xpath="VideoSets"/>

            <xs:attribute xpath="VideoSetId"/>

        </xs:key>

    </xs:element>

</xs:schema>

Für Hinweise die zur Ergreifung des Übertäters führen, wäre ich sehr dankbar.

Die verwendete FirstSpirit-Version ist leider sehr alt: 5.2.608.75261

Beste Grüße, Sven

0 Kudos
3 Replies
hoebbel
Crownpeak employee

Hallo Sven,

das sieht erst einmal alles so aus, als müsste es funktionieren.

Das Skript hast Du über einen Rechtsklick auf einem der Datensätze gestartet?

Im Log des SiteArchitect und im fs-server.log sind keine Exceptions zu finden? Der Fehlersammler unten links zeigt auch keinen Fehler an, wenn Du das Skript ausführst? Falls Du an einer der Stellen einen Fehler findest, würde der bei der Analyse des Problems weiterhelfen Smiley Happy

Der Layer ist in den Projekteigenschaften (ServerManager->Projekt/Eigenschaften->Datenbanken) mit allen drei Haken versehen worden (also Ausgewählt, Schreibgeschützt und Kein Schema Sync)?

Und ja - FirstSpirit braucht eine primary Key Spalte - die ist aber gegeben und die Version sollte neu genug sein, so dass dies keine Integer Spalte sein muss.

Viele Grüße

Holger

0 Kudos
serens
Returning Observer

Hallo Holger,

vielen Dank für Deine Hinweise.

Das Skript hast Du über einen Rechtsklick auf einem der Datensätze gestartet?

Ja, das habe ich. Ich habe mir auch jede Variable einmal ausgeben lassen und diese waren immer nachvollziehbar gefüllt.

Im Log des SiteArchitect und im fs-server.log sind keine Exceptions zu finden? Der Fehlersammler unten links zeigt auch keinen Fehler an, wenn Du das Skript ausführst? Falls Du an einer der Stellen einen Fehler findest, würde der bei der Analyse des Problems weiterhelfen

Leider keine Fehler.

Der Layer ist in den Projekteigenschaften (ServerManager->Projekt/Eigenschaften->Datenbanken) mit allen drei Haken versehen worden (also Ausgewählt, Schreibgeschützt und Kein Schema Sync)?

Jawohl.

Und ja - FirstSpirit braucht eine primary Key Spalte - die ist aber gegeben und die Version sollte neu genug sein, so dass dies keine Integer Spalte sein muss.

Okay, hier lag meine Hoffnung. Nämlich das etwas am Schema nicht passen würde.

Beste Grüße, Sven

0 Kudos
hoebbel
Crownpeak employee

Hallo Sven,

OK - prüf bitte mal folgendes:

Gibt es eine Vorschauseite für die Tabellenvorlage. Wenn nein, leg eine an und indiziere erneut. Klappt es nun?

Wenn immer noch nicht, dann such mal nach dem Inhalt eines entsprechenden Datensatzes in der globalen Suche im SiteArchitect. Wird der Datensatz dort gefunden? Wenn ja, ist er im Suchindex, das Problem ist dann wahrscheinlich spezifisch für den ContentCreator.

Zur weiteren Analyse erhöhe dann den Loglevel auf DEBUG und reproduzier das Fehlverhalten im ContentCreator. Im Log solltest Du nun Informationen zur Suche finden, z.B. so etwas:

DEBUG <datetime> (de.espirit.firstspirit.server.search.store.IndexSearchStage): query: ((+store:contentstore +schema:xxxx_video_stg +table:VideoSets))

DEBUG <datetime> (de.espirit.firstspirit.server.search.store.IndexSearchStage): hits: 192 in 0ms

DEBUG <datetime> (de.espirit.firstspirit.server.search.pipeline.CompositeStage): return 50 elements.

DEBUG <datetime> (de.espirit.firstspirit.server.search.store.UserChangeFilter): accepted 0 of 50 elements.

Insbesondere die beiden letzten Zeilen sind hier interessant. Wenn in der vorletzten Zeile steht, dass mehr als 0 Elemente gefunden wurden, in der letzten dann aber nur 0 accepted wurden, handelt es sich höchstwahrscheinlich um den Bug mit der internen ID CORE-9826, der ab FS-5.2R1902 gefixt wurde. In diesem Fall hilft dann ein Update der FirstSpirit Version - zumindest ist mir kein Workaround bekannt Smiley Sad

Viele Grüße

Holger

0 Kudos