Home
Home
Englische Version
Support
Impressum
25.2 Release ►

Start Chat with Collection

    Main Navigation

    • Vorbereitung
      • Einrichten InSpire G7 Primärsystem und Standby Appliances
      • Erstellen einer InSpire-VM auf Hyper-V
      • Initiale Inbetriebnahme für G7 Appliances
      • Konnektoren
    • Datenquellen
      • Anleitung zur Datenintegration mithilfe eines SQL Datenbank-Beispiels
      • Handbuch - Mindbreeze InSpire Insight Apps in Salesforce
      • Indizierung benutzerspezifischer Eigenschaften (SharePoint 2013 Connector)
      • Indizierung benutzerspezifischer Objekttypen (Documentum)
      • Installation & Konfiguration - Atlassian Confluence Sitemap Generator Add-On
      • Installation & Konfiguration - Caching Principal Resolution Service
      • Installation & Konfiguration - Mindbreeze InSpire Insight Apps in Microsoft SharePoint On-Prem
      • Konfiguration - Atlassian Confluence Connector
      • Konfiguration - Best Bets Connector
      • Konfiguration - Box Connector
      • Konfiguration - COYO Connector
      • Konfiguration - Data Integration Connector
      • Konfiguration - Documentum Connector
      • Konfiguration - Dropbox Connector
      • Konfiguration - Egnyte Connector
      • Konfiguration - GitHub Connector
      • Konfiguration - Google Drive Connector
      • Konfiguration - GSA Adapter Service
      • Konfiguration - HL7 Connector
      • Konfiguration - IBM Connections Connector
      • Konfiguration - IBM Lotus Connector
      • Konfiguration - Jira Connector
      • Konfiguration - JVM Launcher Service
      • Konfiguration - LDAP Connector
      • Konfiguration - Microsoft Azure Principal Resolution Service
      • Konfiguration - Microsoft Dynamics CRM Connector
      • Konfiguration - Microsoft Exchange Connector
      • Konfiguration - Microsoft File Connector (Legacy)
      • Konfiguration - Microsoft File Connector
      • Konfiguration - Microsoft Graph Connector
      • Konfiguration - Microsoft Loop Connector
      • Konfiguration - Microsoft Project Connector
      • Konfiguration - Microsoft SharePoint Connector
      • Konfiguration - Microsoft SharePoint Online Connector
      • Konfiguration - Microsoft Stream Connector
      • Konfiguration - Microsoft Teams Connector
      • Konfiguration - Salesforce Connector
      • Konfiguration - SCIM Principal Resolution Service
      • Konfiguration - SemanticWeb Connector
      • Konfiguration - ServiceNow Connector
      • Konfiguration - Web Connector
      • Konfiguration - Yammer Connector
      • Mindbreeze InSpire Insight Apps in Microsoft SharePoint Online
      • Mindbreeze Web Parts in Microsoft SharePoint
      • Whitepaper - Web Connector Erweiterte JavaScript Anwendungsfälle
    • Konfiguration
      • CAS Authentifizierung
      • Cookie Authentifizierung
      • Handbuch - AI Chat
      • Handbuch - Erstellung einer AWS 10M InSpire Applikation
      • Handbuch - Erstellung einer AWS 1M InSpire Applikation
      • Handbuch - Erstellung einer AWS 2M InSpire Applikation
      • Handbuch - Erstellung einer Google Compute Cloud Virtual Machine InSpire Applikation
      • Handbuch - Erstellung einer Oracle Cloud 10M InSpire Applikation
      • Handbuch - Erstellung einer Oracle Cloud 1M InSpire Applikation
      • Handbuch - MMC_ Services
      • Handbuch - Natural Language Question Answering (NLQA)
      • Handbuch - SSO mit Microsoft AAD oder AD FS
      • Handbuch - Text Classification Insight Services
      • I18n Item Transformation
      • JWT Authentifizierung
      • Konfiguration - Alternative Suchvorschläge und automatische Sucherweiterung
      • Konfiguration - Backend Credentials
      • Konfiguration - Benachrichtigungen
      • Konfiguration - CJK Tokenizer Plugin
      • Konfiguration - CSV Metadata Mapping Item Transformation Service
      • Konfiguration - Entity Recognition
      • Konfiguration - Export Funktionalität
      • Konfiguration - External Query Service
      • Konfiguration - Filter Plugins
      • Konfiguration - Gesammelte Ergebnisse
      • Konfiguration - GSA Late Binding Authorization
      • Konfiguration - Identity Conversion Service - Replacement Conversion
      • Konfiguration - InceptionImageFilter
      • Konfiguration - Index-Servlets
      • Konfiguration - InSpire AI Chat und Insight Services für Retrieval Augmented Generation
      • Konfiguration - Item Property Generator
      • Konfiguration - Kerberos Authentfizierung
      • Konfiguration - Management Center Menü
      • Konfiguration - Metadata Reference Builder Plugin
      • Konfiguration - Metadaten Anreicherung
      • Konfiguration - Mindbreeze InSpire
      • Konfiguration - Mindbreeze Proxy Umgebung (Remote Connector)
      • Konfiguration - Outlook Add-In
      • Konfiguration - Personalisierte Relevanz
      • Konfiguration - Plugin Installation
      • Konfiguration - Principal Validation Plugin
      • Konfiguration - Profile
      • Konfiguration - Reporting Query Log
      • Konfiguration - Reporting Query Performance Tests
      • Konfiguration - Request Header Session Authentisierung
      • Konfiguration - Verteilte Konfiguration (Windows)
      • Konfiguration - Vokabulare für Synonyme und Autovervollständigung
      • Konfiguration von Vorschaubildern
      • Mindbreeze Personalization
      • Mindbreeze Property Expression Language
      • Mindbreeze Query Expression Transformation
      • SAML Authentifizierung
      • Spracherkennung mit dem LanguageDetector Plugin
      • Trusted Peer Authentication für Mindbreeze InSpire
      • Verwendung von InSpire-Snapshots in einer CI_CD-Umgebung
    • Betrieb
      • Anpassung der InSpire Host OpenSSH Einstellungen - LoginGraceTime auf 0 setzen (Mitigation für CVE-2024-6387)
      • app.telemetry Statistiken zu Suchanfragen
      • Bereitstellen von app.telemetry Informationen mittels SNMPv3 auf G7 Appliances
      • CIS Level 2 Hardening - SELinux in den Modus Enforcing versetzen
      • Handbuch - Administration von Insight Services für Retrieval Augmented Generation
      • Handbuch - Filemanager
      • Handbuch - Indizierungs- und Suchlogs
      • Handbuch - Kommandozeilenwerkzeuge
      • Handbuch - Sichern & Wiederherstellen
      • Handbuch - Updates und Downgrades
      • Handbuch - Verteilter Betrieb (G7)
      • Index Betriebskonzepte
      • Inspire Diagnose und Ressourcen Monitoring
      • Konfiguration - app.telemetry Dashboards für Nutzungsanalyse
      • Konfiguration - Nutzungsanalyse
      • Löschung der Festplatten
      • Wiederherstellen des Lieferzustandes
    • Anwenderhandbuch
      • Browser Extension
      • Cheat Sheet
      • iOS App
      • Tastaturbedienung
    • SDK
      • api.chat.v1beta.generate Schnittstellenbeschreibung
      • api.v2.alertstrigger Schnittstellenbeschreibung
      • api.v2.export Schnittstellenbeschreibung
      • api.v2.personalization Schnittstellenbeschreibung
      • api.v2.search Schnittstellenbeschreibung
      • api.v2.suggest Schnittstellenbeschreibung
      • api.v3.admin.SnapshotService Schnittstellenbeschreibung
      • Debugging (Eclipse)
      • Einbetten des Insight App Designers
      • Entwicklung eines API V2 Search Request Response Transformer
      • Entwicklung eines Query Expression Transformer
      • Entwicklung von Insight Apps
      • Entwicklung von Item Transformation und Post Filter Plugins mit der Mindbreeze SDK
      • Java API Schnittstellenbeschreibung
      • OpenAPI Schnittstellenbeschreibung
      • SDK Übersicht
    • Release Notes
      • Release Notes 20.1 Release - Mindbreeze InSpire
      • Release Notes 20.2 Release - Mindbreeze InSpire
      • Release Notes 20.3 Release - Mindbreeze InSpire
      • Release Notes 20.4 Release - Mindbreeze InSpire
      • Release Notes 20.5 Release - Mindbreeze InSpire
      • Release Notes 21.1 Release - Mindbreeze InSpire
      • Release Notes 21.2 Release - Mindbreeze InSpire
      • Release Notes 21.3 Release - Mindbreeze InSpire
      • Release Notes 22.1 Release - Mindbreeze InSpire
      • Release Notes 22.2 Release - Mindbreeze InSpire
      • Release Notes 22.3 Release - Mindbreeze InSpire
      • Release Notes 23.1 Release - Mindbreeze InSpire
      • Release Notes 23.2 Release - Mindbreeze InSpire
      • Release Notes 23.3 Release - Mindbreeze InSpire
      • Release Notes 23.4 Release - Mindbreeze InSpire
      • Release Notes 23.5 Release - Mindbreeze InSpire
      • Release Notes 23.6 Release - Mindbreeze InSpire
      • Release Notes 23.7 Release - Mindbreeze InSpire
      • Release Notes 24.1 Release - Mindbreeze InSpire
      • Release Notes 24.2 Release - Mindbreeze InSpire
      • Release Notes 24.3 Release - Mindbreeze InSpire
      • Release Notes 24.4 Release - Mindbreeze InSpire
      • Release Notes 24.5 Release - Mindbreeze InSpire
      • Release Notes 24.6 Release - Mindbreeze InSpire
      • Release Notes 24.7 Release - Mindbreeze InSpire
      • Release Notes 24.8 Release - Mindbreeze InSpire
      • Release Notes 25.1 Release - Mindbreeze InSpire
      • Release Notes 25.2 Release - Mindbreeze InSpire
    • Sicherheit
      • Bekannte Schwachstellen
    • Produktinformation
      • Produktinformation - Mindbreeze InSpire - Standby
      • Produktinformation - Mindbreeze InSpire
    Home

    Path

    Sure, you can handle it. But should you?
    Let our experts manage the tech maintenance while you focus on your business.
    See Consulting Packages

    Entwicklung eines Query Expression Transformer

    EinführungPermanenter Link zu dieser Überschrift

    Der Query Expression Transformer bietet die Funktionalität, Mindbreeze Query Anfragen beliebig zu transformieren. Die Funktionalität wird durch das Erstellen eines Plugins mit dem Mindbreeze Software Development Toolkit bereitgestellt. Der SDK erzeugt ein Beispiel-Plugin, das angepasst werden kann.

    VorbereitungPermanenter Link zu dieser Überschrift

    Zum Bauen und Erstellen eines Plugins mit dem Mindbreeze Software Development Toolkit werden folgende Software Komponenten benötigt:

    • Java SE Development Kit: Version 1.8 or later
    • Eclipse IDE for Java Developers

    Mindbreeze Software Development ToolkitPermanenter Link zu dieser Überschrift

    Um ein Plugin-Projekt für ein Query Expression Transformer Plugin zu erstellen, muss das Erstellungsskript mit folgenden Parametern aufgerufen werden:

    mesjavaplugin.<sh|bat> <Plugin Type> <Name> <Base Package>

    • Plugin Type: Der Plugin Typ muss queryexpressiontransformer sein.
    • Name: Der Name des Plugins kann beliebig gewählt werden, wobei der Name keine Punkte oder Sonderzeichen beinhalten sollte. In der Index-Konfiguration kann das Plugin hochgeladen werden und mit dem angegebenen Namen konfiguriert werden.
    • Base Package: Das Base Package der Java Klassen die erzeugt werden. Kann beliebig gewählt werden, wobei der Name keine Punkte oder Sonderzeichen beinhalten sollte.

    Erzeugen eines PluginsPermanenter Link zu dieser Überschrift

    Das Mindbreeze Software Development Toolkit erzeugt ein Plugin-Projekt, welches unter dem angegebenen Namen im aktuellen Verzeichnis verfügbar ist.

    1. Plugin Projekt in Eclipse importieren.

    2. Eine Basisimplementierung des Plugins ist unter dem Namen <Name>QueryExpressionTransformer.java verfügbar.
    3. Zum Erstellen des Plugins muss build.bat (Microsoft Windows) bzw. build.sh (Linux) aufgerufen werden. Ein Plugin mit dem Namen
      <name>-queryexpressiontransformer.zip wird erzeugt.
    4. Das Plugin kann mit der Mindbreeze Konfigurationsoberfläche installiert werden.
    5. Um das Plugin zu verwenden muss es in der Index-Konfiguration unter „Query Transformation Services“ konfiguriert werden. Dazu muss der Transformer zuerst aus dem Dropdown-Menü ausgewählt werden, um diesen dann mit „Add“ zu den Query Transformation Services hinzuzufügen.

    1. Das automatisch generierte Plugin enthält Beispiel-Code zum Transformieren von Queries. Das Beispiel-Plugin transformiert Queries, welche die Wörter „DIN“ und „A4“/ „A5“/ etc. beinhalten. Solche Queries werden transformiert, sodass auch Objekte gefunden werden, dessen Dimensions-Metadaten dem DIN-Standard entsprechen.

    Eine Query wie:

    Poster Cat DIN A4

    Wird transformiert zu:

    (Poster Cat DIN A4) OR (width:297 AND height:210)

    Unten sehen Sie eine Beispielsuche, wo ein zusätzliches Dokument durch diese Query Transformation gefunden wird.

    Implementierung der TransformationPermanenter Link zu dieser Überschrift

    Implementierung der Request TransformationPermanenter Link zu dieser Überschrift

    Um den Request zu transformieren muss die Methode transform implementiert werden.

    Dieses Beispiel ist im generierten Code des SDK enthalten und transformiert den einkommenden Query Expression Transformation Request. Es ist dabei zu beachten, dass die transformierte Query Expression schlussendlich als Query Expression Transformation Response weitergeleitet werden muss.

    /*
    * This inherited method is the entry point for transforming queries.

    * */

    @Override
    public void transform(com.google.protobuf.RpcController rpcController,
                          QueryExprTransformationRequest request,
                              com.google.protobuf.RpcCallback<QueryExprTransformationResponse> done) {
            try {
                QueryExpr transformedQueryExpr = transformQueryExpr(request.getQueryExpr()); //transform the query

                //build response with transformed query

                
    QueryExprTransformationResponse.Builder responseBuilder = QueryExprTransformationResponse.newBuilder();
                responseBuilder.setQueryExpr(transformedQueryExpr);
                QueryExprTransformationResponse response = responseBuilder.build();
                done.run(response);
            } catch (Exception ex) {
                throw new RuntimeException(ex);
            }
        }

    Die eigentliche Transformation führen wir in der Methode transformQueryExpr durch. Hier können Sie sehen, dass jede Art von Query Expression gesondert bearbeitet werden muss, damit das Endergebnis wieder richtig zusammengesetzt wird. Query Expressions können ineinander verschachtelt sein und können eine tiefe Baumstruktur bilden. Für das Transformieren von Queries mit einer solchen Baumstruktur, werden alle Kind-Queries rekursiv abgearbeitet. Der relevante Code dafür kann im generierten Beispiel in der Methode transformOnlyFieldsOfMessage gefunden werden und kann auch für individuelle Anwendungen mit wenig Anpassung weiterverwendet werden.

    /*
         * This Query Expression Transformer can only handle expressions of type EXPR_TERMS.
         * These are the kind of query that is generated for queries without any formatting like "cat poster din a4"
         * Handling for other kinds of query expressions can be added here.
         * It is important to always return a valid Query Expression, not doing so can lead to follow-up-errors
         * */
        QueryExpr transformQueryExpr(QueryExpr expr) {
            
    if (expr.getKind() == Kind.EXPR_TERMS) {
                
    return transformQueryExprTerms(expr);
            }


            
    //recursively iterate through child elements, visit each child element and call transformQueryExpr method again for child query expressions
            return (QueryExpr) transformOnlyFieldsOfMessage(expr);
        }

    In der Implementierung von transformQueryExprTerms aus dem generierten Beispiel kann man erkennen, wie die originale Query Expression zuerst durchsucht und dann manipuliert wird. Weitere Beispiele für das Erstellen von neuen Query Expressions können aus den Unit Tests entnommen werden.

        /*
        * Each kind of Query Expression will need to be handled slightly differently in order to transform the query appropriately.
        * This method contains logic to look for "din" and "a4" in the expression terms and perform the corresponding
        * transformation if the strings exist in the query.
        */
       QueryExpr transformQueryExprTerms(QueryExpr originalExpr) {
          
    if (originalExpr.getKind() != Kind.EXPR_TERMS) {
              
    throw new IllegalArgumentException("Expected kind to be \"EXPR_TERMS\" but was \"" + originalExpr.getKind() + "\"");
           }

          
    if (originalExpr.getTermsExpr() == null) {
              
    return originalExpr;
           }


           List<QueryExpr.Terms.Element> originalTerms = originalExpr.getTermsExpr().getElementList();

           String foundDinMarker = getDinMarkerIfInTerms(originalTerms);


          
    //don't transform if the text markers are not found
           if (foundDinMarker == null) {
              
    return originalExpr;
           }


          
    //build the new query
           QueryExpr heightMetadataSearchExpr = QueryExprHelper.labeled(HEIGHT_METADATA_NAME, QueryExprHelper.term(dinStandardToHeightMm.get(foundDinMarker)));
           QueryExpr widthMetadataSearchExpr = QueryExprHelper.labeled(WIDTH_METADATA_NAME, QueryExprHelper.term(dinStandardToWidthMm.get(foundDinMarker)));


          
    // In this example, we use 'OR' for the outside of the query to find additional results, which match the metadata
           // query while also including all results from the original query
           QueryExpr.Builder transformedQuery =
                   QueryExprHelper.or(

                           QueryExprHelper.terms(originalTerms),

                           QueryExprHelper.and(

                                   heightMetadataSearchExpr,

                                   widthMetadataSearchExpr))

                   .toBuilder();


          
    //always pass on the original unparsed expression
           copyOriginalUnparsedExpr(originalExpr, transformedQuery);

          
    return transformedQuery.build();
       }

    PDF herunterladen

    • Entwicklung eines Query Expression Transformer

    Inhalt

    • Einführung
    • Vorbereitung
    • Erzeugen eines Plugins
    • Implementierung der Transformation

    PDF herunterladen

    • Entwicklung eines Query Expression Transformer