Pesquise por padrão na coleção Cloud Firestore

Estou tentando executar um filtro por padrão em uma coleção do Firestore. Por exemplo, no meu banco de dados do Firestore, tenho uma marca chamadaadidas. O usuário teria uma entrada de pesquisa, onde digitar "adi", "adid", "adida" ou "adidas" retornará oadidas documento. Eu apontei várias soluções para fazer isso:


1. Obtenha todos os documentos e execute um filtro front-end

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

Esta solução obviamente não é uma opção devido aos preços do Firestore. Além disso, pode demorar bastante para executar a solicitação se o número de documentos for alt


2. Uso do Elasticsearch ou Algolia

Isso pode ser interessante. No entanto, acho que é um pouco exagerado adicionar o suporte dessas soluções apenas para uma pesquisa de padrões, e isso também pode rapidamente se tornar car


3. PersonalizadassearchName campo na criação do objeto

ntão eu tive esta solução: na criação do documento, crie um campo com uma variedade de possíveis padrões de pesquis

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

para que o documento possa ser acessado com:

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

Então eu tive várias perguntas:

O que você acha da pertinência e eficiência desta 3ª solução? Até onde você acha que isso poderia ser melhor do que usar uma solução de terceiros como Elasticsearch ou Algolia? Você tem alguma outra idéia para executar o filtro de padrões em uma coleção do firestor

questionAnswers(1)

yourAnswerToTheQuestion