Wyszukiwanie tekstowe jest przeznaczone do indeksowania ciągów na podstawie heurystyki języka . Indeksowanie tekstu obejmuje dwa ogólne kroki:tokenizacja (konwertowanie ciągu na pojedyncze warunki zainteresowania), a następnie stemming (przekształcenie każdego terminu w formę główną do indeksowania w oparciu o zasady specyficzne dla danego języka).
Podczas etapu tokenizacji niektóre znaki (na przykład symbole interpunkcyjne, takie jak @
) są klasyfikowane jako separatory wyrazów (inaczej delimitery ) zamiast wprowadzania tekstu i służy do rozdzielania oryginalnego ciągu na terminy. Specyficzne dla języka słowa stopu
(powszechne słowa, takie jak „the”, „is” lub „on” w języku angielskim) są również wykluczone z indeksu tekstowego.
Ponieważ wyszukiwana fraza to @@@
składa się wyłącznie z ograniczników, nie ma odpowiedniego wpisu w indeksie tekstowym.
Jeśli chcesz dopasować ogólne wzorce ciągów, użyj wyrażeń regularnych zamiast wyszukiwania tekstowego. Na przykład:db.getCollection('TestCollection').find({field2:/@@@/})
. Należy jednak pamiętać o zastrzeżeniach dotyczących używania indeksu dla wyrażeń regularnych.