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?
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)