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

Jak działa wyszukiwanie $text w MongoDB?

Wyszukiwanie tekstowe MongoDB korzysta z biblioteki wzorców kuli śnieżnej aby zredukować słowa do oczekiwanej formy rdzenia (lub rdzenia ) w oparciu o wspólne zasady językowe. Rdzenie algorytmiczne zapewniają szybką redukcję, ale języki mają wyjątki (takie jak nieregularne lub sprzeczne wzorce koniugacji czasowników), które mogą wpływać na dokładność. Wprowadzenie do kuli śnieżnej zawiera dobry przegląd niektórych ograniczeń algorytmicznego ustalania macierzy.

Twój przykład walking pnie do walk i pasuje zgodnie z oczekiwaniami.

Jednak twój przykład trekking pnie do trekking więc nie pasuje do słowa kluczowego wyszukiwania trek .

Możesz to potwierdzić, wyjaśniając zapytanie i przeglądając parsedTextQuery informacje, które pokazują użyte terminy wyszukiwania oparte na tematach:

db.events.find({$text: {$search: 'Trekking'} }).explain().queryPlanner.winningPlan.parsedTextQuery
{
​   "terms" : [
​       "trekk"
​   ],
​   "negatedTerms" : [ ],
​   "phrases" : [ ],
​   "negatedPhrases" : [ ]
}

Możesz również sprawdzić spodziewane wyrzucenie śnieżki za pomocą Demo śnieżki online lub znajdując bibliotekę Snowball dla preferowanego języka programowania.

Aby obejść wyjątki, które mogą często wpływać na przypadek użycia, możesz rozważyć dodanie do indeksu tekstowego kolejnego pola ze słowami kluczowymi wpływającymi na wyniki wyszukiwania. W tym przykładzie dodałbyś trek jako słowo kluczowe, aby wydarzenie opisane jako trekking pasuje również w wynikach wyszukiwania.

Istnieją inne podejścia do dokładniejszego przegięcia, które ogólnie określa się jako lematyzacja . Algorytmy lemmatyzacji są bardziej złożone i zaczynają zmierzać w kierunku przetwarzania języka naturalnego . Istnieje wiele zestawów narzędzi typu open source (i komercyjnych), które możesz wykorzystać, jeśli chcesz zaimplementować bardziej zaawansowane wyszukiwanie tekstowe w swojej aplikacji, ale są one poza bieżącym zakresem funkcji wyszukiwania tekstowego MongoDB.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDb — Zmień typ z Int na Double

  2. Jak przeszukiwać wszystkie poddokumenty

  3. mangusta:zwróć tylko klucze z dokumentu

  4. Jak pobrać dane z MongoDB do prostej tablicy za pomocą Node.JS i Mongoose?

  5. Filtrowanie wbudowanej tablicy w MongoDB