Busque por patrón en la colección Cloud Firestore

Estoy intentando realizar un filtro por patrón sobre una colección de Firestore. Por ejemplo, en mi base de datos de Firestore tengo una marca llamadaadidas. El usuario tendría una entrada de búsqueda, donde escribir "adi", "adid", "adida" o "adidas" devuelve eladidas documento. Señalé varias soluciones para hacer esto:


1. Obtenga todos los documentos y realice un filtro frontal

var brands = db.collection("brands");
filteredBrands = brands.filter((br) => br.name.includes("pattern"));

Esta solución obviamente no es una opción debido a los precios de Firestore. Además, podría ser bastante largo realizar la solicitud si el número de documentos es alto.


2. Uso de Elasticsearch o Algolia

Esto podría ser interesante. Sin embargo, creo que esto es un poco exagerado para agregar el soporte de estas soluciones solo para una búsqueda de patrones, y también esto puede volverse rápidamente costos


3. PersonalizadosearchName campo en la creación de objetos

e modo que tenía esta solución: en la creación de documentos, cree un campo con una variedad de posibles patrones de búsqueda:

{
    ...
    "name":"adidas",
    "searchNames":[
        "adi",
        "adida",
        "adidas"
    ],
    ...
}

para que se pueda acceder al documento con:

filteredBrands = db.collection("brands").where("searchNames", "array-contains", "pattern");

Así que tuve varias preguntas:

¿Qué opinas sobre la pertinencia y la eficiencia de esta tercera solución? ¿Hasta qué punto cree que esto podría ser mejor que usar una solución de terceros como Elasticsearch o Algolia? ¿Tiene alguna otra idea para realizar un filtro de patrón en una colección de almacén de incendios?

Respuestas a la pregunta(1)

Su respuesta a la pregunta