Saltar al contenido

Google Firestore: consulta sobre la subcadena de un valor de propiedad (búsqueda de texto)

Solución:

Estoy de acuerdo con la respuesta de @ Kuba, pero aún así, debe agregar un pequeño cambio para que funcione perfectamente para la búsqueda por prefijo. aquí lo que funcionó para mí

Para buscar registros que comiencen con el nombre queryText

collectionRef.where('name', '>=', queryText).where('name', '<=', queryText+ 'uf8ff').

El personaje uf8ff utilizado en la consulta es un punto de código muy alto en el rango Unicode (es un área de uso privada [PUA] código). Debido a que se encuentra después de la mayoría de los caracteres regulares en Unicode, la consulta coincide con todos los valores que comienzan con queryText.

No existe tal operador, los permitidos son ==, <, <=, >, >=.

Puede filtrar solo por prefijos, por ejemplo, para todo lo que comience entre bar y foo puedes usar

collectionRef.where('name', '>=', 'bar').where('name', '<=', 'foo')

Puede usar un servicio externo como Algolia o ElasticSearch para eso.

Si bien la respuesta de Kuba es cierta en lo que respecta a las restricciones, puede emular parcialmente esto con una estructura similar a un conjunto:

{
  'terms': {
    'reebok': true,
    'mens': true,
    'tennis': true,
    'racket': true
  }
}

Ahora puedes consultar con

collectionRef.where('terms.tennis', '==', true)

Esto funciona porque Firestore creará automáticamente un índice para cada campo. Desafortunadamente, esto no funciona directamente para consultas compuestas porque Firestore no crea índices compuestos automáticamente.

Aún puede solucionar esto almacenando combinaciones de palabras, pero esto se pone feo rápidamente.

Probablemente aún esté mejor con una búsqueda de texto completo externa.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *