MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

La ricerca full-text in MongoDB non produce il risultato previsto per @@@

La ricerca di testo è progettata per indicizzare le stringhe in base a euristica della lingua . L'indicizzazione del testo prevede due passaggi generali:tokenizzazione (conversione di una stringa in termini individuali di interesse) seguito da stemming (convertendo ogni termine in una forma radice per l'indicizzazione in base a regole specifiche della lingua).

Durante la fase di tokenizzazione alcuni caratteri (ad esempio simboli di punteggiatura come @ ) sono classificati come separatori di parole (ovvero delimitatori ) anziché l'input di testo e utilizzato per separare la stringa originale in termini. stop words specifici della lingua (Anche parole comuni come "the", "is" o "on" in inglese) sono escluse da un indice di testo.

Dal momento che la tua frase di ricerca di @@@ è costituito interamente da delimitatori, non esiste una voce corrispondente nell'indice di testo.

Se desideri abbinare modelli di stringa generici, dovresti utilizzare espressioni regolari piuttosto che la ricerca di testo. Ad esempio:db.getCollection('TestCollection').find({field2:/@@@/}) . Tuttavia, tieni presente le avvertenze sull'utilizzo dell'indice per le espressioni regolari.