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.