MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Wyszukiwanie pełnotekstowe w MongoDB nie daje oczekiwanego wyniku dla @@@

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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zaszyfrowana aktualizacja hasła za pomocą ekspresu mangoose

  2. dlaczego tworzę indeks 2dsphere, ale kiedy pytam, pokazuje s2cursor?

  3. mongodb agreguje wiele tablic

  4. Zaktualizuj jedno pole w MongoDB w jednym osadzonym dokumencie

  5. Jaki jest właściwy sposób tworzenia synchronicznego zapytania MongoDB w Node.js?