wyszukiwanie tekstowe funkcja w MongoDB (od wersji 2.6) nie ma żadnych wbudowanych funkcji dopasowywania rozmytego/częściowego łańcucha. Jak już zauważyłeś, przypadek użycia koncentruje się obecnie na obsłudze języka i rdzeni z podstawowymi operatorami boolowskimi i dopasowywaniem słów/fraz.
Istnieje kilka możliwych podejść, które należy rozważyć w przypadku dopasowania rozmytego, w zależności od wymagań i sposobu, w jaki chcesz zakwalifikować się jako „wydajne” (szybkość, pamięć masowa, czas programisty, wymagana infrastruktura itp.):
-
Zaimplementuj obsługę rozmytego/częściowego dopasowania w logice aplikacji, korzystając z niektórych łatwo dostępnych algorytmów podobnych do dźwięków i podobieństw. Korzyści z tego podejścia obejmują brak konieczności dodawania dodatkowej infrastruktury i możliwość dokładnego dostosowania dopasowania do Twoich wymagań.
Więcej szczegółowych przykładów znajdziesz na:Efficient Techniki dopasowania rozmytego i częściowego w MongoDB .
-
Zintegruj z zewnętrznym narzędziem wyszukiwania, które zapewnia bardziej zaawansowane funkcje wyszukiwania. Zwiększa to złożoność wdrożenia i prawdopodobnie jest przesadą tylko w przypadku wprowadzania z wyprzedzeniem, ale możesz znaleźć inne funkcje wyszukiwania, które chciałbyś włączyć w innym miejscu w swojej aplikacji (np. „w ten sposób”, bliskość słów, wyszukiwanie aspektowe, ..).
Na przykład zobacz:Jak wykonać Rozmyte dopasowanie z Mongo Connector i Elastic Search . Uwaga:zapytanie rozmyte opiera się na odległości Levenshteina.
-
Użyj biblioteki autouzupełniania, takiej jak open source Twittera
typeahead.js
, który obejmuje aparat sugestii i interfejs API zapytań/buforowania. Typeahead jest właściwie uzupełnieniem każdego z innych podejść backendowych, a jego (opcjonalny) silnik sugestii Bloodhound obsługuje pobieranie z wyprzedzeniem, a także buforowanie danych w pamięci lokalnej.