Pochodzenie językowe w wyszukiwaniu tekstowym używa algorytmu, który próbuje powiązać słowa pochodzące ze wspólnej bazy (np. „bieganie” powinno odpowiadać „biegnie”). Różni się to od dopasowania prefiksu (np. „niebieski” dopasowujący „jagoda”), który chcesz zaimplementować dla funkcji autouzupełniania.
Jak najefektywniej używać typeahead.js
z wyszukiwaniem tekstowym MongoDB sugerowałbym skupienie się na prefetch
wsparcie z wyprzedzeniem:
-
Utwórz
keywords
kolekcja, która ma wspólne słowa (być może z licznikiem częstotliwości użycia) używane w Twojej kolekcji. Możesz utworzyć tę kolekcję, uruchomienie Map/Reduce w całej kolekcji masz indeks wyszukiwania tekstowego i aktualizuj listę słów za pomocą okresowych Przyrostowa mapa/zmniejszanie w miarę dodawania nowych dokumentów. -
Niech Twoja aplikacja wygeneruje dokument JSON na podstawie
keywords
kolekcja z unikalnymi słowami kluczowymi (być może ograniczona do „popularnych” słów kluczowych w oparciu o częstotliwość słów, aby lista była możliwa do zarządzania/istotna).
Następnie możesz użyć wygenerowanych słów kluczowych JSON do autouzupełniania po stronie klienta za pomocą prefetch
typeahead funkcja:
$('.mysearch .typeahead').typeahead({
name: 'mysearch',
prefetch: '/data/keywords.json'
});
typeahead.js
buforuje prefetch
Dane JSON w localStorage do wyszukiwania po stronie klienta. Po przesłaniu formularza wyszukiwania Twoja aplikacja może korzystać z po stronie serwera MongoDB wyszukiwanie tekstowe
aby zwrócić pełne wyniki w kolejności trafności.