Canalizaciones de índice de sinónimos de Ingest

Correlación de campos de índice de sinónimos de la especificación de datos

El diagrama siguiente ilustra la canalización de indexación de sinónimos implementada en Apache NiFi. El flujo consta principalmente de tres etapas:
  1. Genere documentos de Diccionario de sinónimos para Elasticsearch basándose en el sinónimo de entrada por idioma.
  2. (IF POST) Extraiga los sinónimos actuales en el Diccionario de índice de productos y añádalos al documento generado desde la etapa uno.
  3. Actualice los diccionarios específicos del idioma del producto con el documento de sinónimos generado desde la etapa uno y dos.
Inicial
Llamada PUT o POST REST: http://<Hostname>:30700/connectors/JsonSynonym/data
{​​​
    ​"synonyms": {
        ​ "english": {
            "synonyms": [
                "coff => coffee",
                "driveway, road, street"​
            ]
        ​},
        "french": {
            "synonyms": [
                ​"coff => coffee",
                "driveway, road, street"​
            ]
        ​​}
    }
​}​​​
1. Generar documento de Diccionario de sinónimos t
En el siguiente flujo de datos se describe cómo los datos de sinónimos específicos del idioma se pueden transformar utilizando el script Groovy CreateSynonymBodyPart1.
Salida:
{
    ​"analysis" : {
        "filter" : {
            "custom_english_synonyms_dictionary" : {
                ​"synonyms" : [ "coff => coffee", "driveway, road, street" ],
                "type" : "synonym"
            },
            "custom_french_synonyms_dictionary" : {
                ​"synonyms" : [ "coff => coffee", "driveway, road, street" ],
                "type" : "synonym"
            ​}
        ​}
    }
}​
2. (IF POST) Extrae los sinónimos actuales del Diccionario de índice de productos y los añade al documento generado
El flujo de información siguiente describe lo que sucede cuando el usuario realiza una solicitud POST*:
  1. Se realiza una llamada GET para obtener los diccionarios de sinónimos actuales por idioma del índice de productos.
  2. Los datos de sinónimo específicos del idioma del paso 1 se transformarán utilizando el script Groovy CreateSynonymBodyPart2 para fusionar los datos con el documento generado en la etapa 1.
*De lo contrario, el usuario realizará una solicitud PUT, que no añadirá los diccionarios de sinónimos especificados para el idioma actual en el índice al documento de la etapa 1.
Salida del paso 2:
​{
    ​"analysis" : {
        "filter" : {
            "custom_english_synonyms_dictionary" : {
                ​"synonyms" : [ "coff => coffee", "driveway, road, street" ],
                "type" : "synonym"
            },
            "custom_french_synonyms_dictionary" : {
                ​"synonyms" : [ "coff => coffee", "ibm => hcl", "driveway, road, street", "musab => musab mobashir" ],
                "type" : "synonym"
            ​},
            "custom_german_synonyms_dictionary" : {
                ​"synonyms" : [ "ibm => hcl", "driveway, road, street", "musab => musab mobashir" ],
                "type" : "synonym"
            ​}
        ​}
    }
}​
3. Actualizar los diccionarios específicos del idioma del producto con el documento de sinónimos
El flujo de información anterior describirá el proceso de actualización (sobrescritura) del diccionario específico del idioma con la documentación generada anteriormente.
La solicitud procesa los pasos siguientes:
  1. Cerrar índice de productos
  2. Actualizar índice de productos
  3. Abrir índice de productos

Correlación de campos de índice de sinónimos de la base de datos

Especificación de datos:

El diagrama siguiente ilustra la canalización de indexación de asociación de términos de búsqueda (STA) implementada en Apache NiFi. El flujo consta principalmente de dos etapas:
  1. Extraiga las STA de la base de datos relativa a StoreID (y storeID relacionado) y genere el documento de STA para Elastic Search.
  2. Actualice los diccionarios específicos del idioma del producto con el documento de STA generado a partir de la etapa uno.
Paso 1 Extraer las STA de la base de datos relativa a StoreID (y storeID relacionada) y generar documentos STA para Elastic Search
En el siguiente flujo de datos se describe cómo se pueden transformar los datos de base de datos de STA utilizando el script Groovy CreateSTABody.
SQL:
	SELECT S.SRCHTERMASSOC_ID,
		       LISTAGG(S.ASSOCIATIONTYPE, '###') WITHIN GROUP (ORDER BY T.TYPE) ASSOCIATIONTYPE,
		       LISTAGG(S.STATUS, '###') STATUS,
		       LISTAGG(L.LOCALENAME, '###') LOCALENAME,
		       LISTAGG(T.TYPE, '###') TYPE,
		       LISTAGG(T.TERM, '###') TERM
		  FROM LANGUAGE L, SRCHTERMASSOC S, SRCHTERM T, STORECAT C
		 WHERE NOT S.ASSOCIATIONTYPE = 4 AND S.STATUS = 1 AND S.SRCHTERMASSOC_ID=T.SRCHTERMASSOC_ID
		   AND L.LANGUAGE_ID=S.LANGUAGE_ID AND L.LANGUAGE_ID = ${param.langId}
		   AND S.STOREENT_ID IN
		       (SELECT RELATEDSTORE_ID FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId})
		   AND C.MASTERCATALOG = 1 AND C.CATALOG_ID = ${param.catalogId}
		   AND C.STOREENT_ID IN
		       (SELECT RELATEDSTORE_ID FROM STOREREL WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId})
	         GROUP BY S.SRCHTERMASSOC_ID
Entrada:
[
  {
    "SRCHTERMASSOC_ID": 3074457345616678000,
    "ASSOCIATIONTYPE": "1###1",
    "STATUS": "1###1",
    "LOCALENAME": "en_US           ###en_US           ",
    "TYPE": "1###1",
    "TERM": "laptop###thinkpad"
  }
]
Salida:
{
  "analysis": {
    "filter": {
      "custom_en_US_sta": {
        "synonyms": [
          "laptop, thinkpad"
        ],
        "type": "synonym"
      }
    }
  }
}
Etapa 2. Actualizar diccionarios específicos de idioma del producto con el documento de STA generado en la etapa uno
El siguiente flujo de entrada describe el proceso
  1. Cerrar índice de productos
  2. Actualizar índice de productos
  3. Abrir índice de productos
de actualización (sobrescritura) del diccionario específico del idioma con la documentación generada anteriormente mediante los pasos siguientes: