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

Wyszukiwanie pełnotekstowe MongoDB + obejście częściowego dopasowania słów

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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak usunąć n-ty element tablicy w mongodb

  2. Jak grupować według wielu pól w MongoDB, gdy jedno jest polem daty?

  3. Wdrożenie Strapi Heroku nie łączy się z MongoDB

  4. Chcę wynik z odrębną wartością jednego pola z mongodb przy użyciu danych wiosennych

  5. MongoError:nie można zmienić _id dokumentu