sql >> Database >  >> NoSQL >> MongoDB

Full Text Search in MongoDB levert niet het verwachte resultaat op voor @@@

Zoeken naar tekst is ontworpen om tekenreeksen te indexeren op basis van taalheuristieken . Tekstindexering omvat twee algemene stappen:tokeniseren (een string omzetten in individuele termen van belang) gevolgd door stemming (elke term omzetten in een stamvorm voor indexering op basis van taalspecifieke regels).

Tijdens de tokeniseringsstap zijn bepaalde tekens (bijvoorbeeld leestekens zoals @ ) zijn geclassificeerd als woordscheidingstekens (ook bekend als scheidingstekens ) in plaats van tekstinvoer en gebruikt om de originele tekenreeks in termen te scheiden. Taalspecifieke stopwoorden (gewone woorden zoals "the", "is" of "on" in het Engels) worden ook uitgesloten van een tekstindex.

Aangezien uw zoekterm van @@@ bestaat volledig uit scheidingstekens, er is geen corresponderend item in de tekstindex.

Als u generieke tekenreekspatronen wilt matchen, moet u reguliere expressies in plaats van tekst zoeken. Bijvoorbeeld:db.getCollection('TestCollection').find({field2:/@@@/}) . Houd echter rekening met de kanttekeningen bij indexgebruik voor reguliere expressies.



  1. MongoDB:documenten ophalen met tags

  2. MongoDB:Query heeft een impliciete limiet (256)?

  3. Mongoose dit.model is geen functie

  4. Is er een lengtelimiet voor veldwaarden in mongo-query's?