Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

150
Vistas
Concatenar campos json y buscar en valor concatenado en MarkLogic

Tengo el siguiente formato json para almacenar el nombre y apellido de la persona. También guardo el apodo de la persona.

 { "Person": { "Records": [ { "nameType": "Primary", "firstName": "Sagar", "lastName": "Dravid" }, { "nameType": "konw as", "firstName": "Bunny", "lastName": "Bhau" } ] } }

Estoy desarrollando una API de búsqueda de escritura anticipada para la que necesito combinar el nombre y el apellido. Puedo buscar en un solo campo individual como solo en el nombre o en el apellido. intentó debajo del código

 .where(cts.jsonPropertyValueQuery("firstName", [str + "* *"], ["wildcarded", "punctuation-insensitive", "diacritic-insensitive", "unstemmed", "case-insensitive"])) .map(mapper) .withOptions({ search: ['filtered'] }) .result();

Cómo puedo concatenar campos json para lograr una búsqueda de nombre completa, de modo que, si el usuario escribe "Sagar Dravid" o "Bunny Bhau", debería obtener un resultado, pero no debería obtener un resultado si el usuario escribe "Sagar Bhau" o "Bunny Dravid". ¿Alguna sugerencia?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Si entiendo su requisito correctamente, podría usar un cts.nearQuery con un cts.orQuery para cada propiedad (lastName y firstName) que tiene un cts.jsonPropertyValueQuery para cada uno de los valores de nombre (dividiendo el espacio):

 const searchString = "Bunny Bhau" const query = cts.nearQuery( searchString.split(" ").map(term => cts.orQuery(["firstName", "lastName"] .map(property => cts.jsonPropertyValueQuery(property, term + "*" , ["wildcarded", "punctuation-insensitive", "diacritic-insensitive", "unstemmed", "case-insensitive"]) ) ) ), 1)

Lo cual generaría lo siguiente:

 cts.nearQuery([ cts.orQuery([ cts.jsonPropertyValueQuery("firstName", "Bunny*", [ "case-insensitive", "diacritic-insensitive", "punctuation-insensitive", "unstemmed", "wildcarded", "lang=en"], 1), cts.jsonPropertyValueQuery("lastName", "Bunny*", [ "case-insensitive", "diacritic-insensitive", "punctuation-insensitive", "unstemmed", "wildcarded", "lang=en"], 1) ],[]), cts.orQuery([ cts.jsonPropertyValueQuery("firstName", "Dravid*", [ "case-insensitive", "diacritic-insensitive", "punctuation-insensitive", "unstemmed", "wildcarded", "lang=en"], 1), cts.jsonPropertyValueQuery("lastName", "Dravid*", [ "case-insensitive", "diacritic-insensitive", "punctuation-insensitive", "unstemmed", "wildcarded", "lang=en"], 1) ],[])], 1,[], 1)
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda