Latest web development tutorials

MongoDB wyszukiwania pełnotekstowego

Ustanowienie pełnotekstowego indeksu wyszukiwania dla każdego słowa, wskazując liczbę i lokalizację tego słowa pojawia się w artykule, kiedy zapytanie użytkownika, program wyszukiwania zostaną ustalone z wyprzedzeniem, aby znaleźć indeks, a wyniki wyszukiwania z powrotem do metody wyszukiwania użytkownika.

Proces ten jest podobny do szukanego słowa przez słowo procesie odzyskiwania słownika stołowego.

MongoDB wersja 2.4 od początku do wspierania wyszukiwania pełnotekstowego, obecnie obsługuje 15 języków (chwilowo nie obsługuje chiński) indeksu pełnotekstowego.

  • duński
  • holenderski
  • angielski
  • fiński
  • francuski
  • niemiecki
  • węgierski
  • włoski
  • norweski
  • portugalski
  • rumuński
  • rosyjski
  • hiszpański
  • szwedzki
  • turecki

Włącz wyszukiwanie pełnotekstowe

Po MongoDB wersji 2.6 jest włączony wyszukiwania pełnotekstowego domyślne, w przypadku korzystania z poprzedniej wersji, należy użyć następującego kodu, aby umożliwić przeszukiwanie pełnotekstowe:

>db.adminCommand({setParameter:true,textSearchEnabled:true})

Albo użyć polecenia:

mongod --setParameter textSearchEnabled=true

Tworzenie indeksu pełnotekstowego

Rozważmy następujące zbiory danych posty dokumencie, w tym treści artykułu (post_text) i etykiet (tagów):

{
   "post_text": "enjoy the mongodb articles on w3cschool.cc",
   "tags": [
      "mongodb",
      "w3cschool"
   ]
}

Możemy zbudować indeksu pełnotekstowego pola post_text, więc możemy przeszukać treść artykułu:

>db.posts.ensureIndex({post_text:"text"})

Użyj indeksowania pełnotekstowego

Teraz, gdy mamy siedzibę indeksu pełnotekstowego post_text możemy szukać słów kluczowych w w3cschool.cc artykułu:

>db.posts.find({$text:{$search:"w3cschool.cc"}})

Następujące polecenie zwraca dane dokumentów zawartych w3cschool.cc następujących słów kluczowych:

{ 
   "_id" : ObjectId("53493d14d852429c10000002"), 
   "post_text" : "enjoy the mongodb articles on w3cschool.cc", 
   "tags" : [ "mongodb", "w3cschool" ]
}
{
   "_id" : ObjectId("53493d1fd852429c10000003"), 
   "post_text" : "writing tutorials on w3cschool.cc",
   "tags" : [ "mongodb", "tutorial" ] 
}

Jeśli korzystasz ze starszej wersji MongoDB, można użyć następującego polecenia:

>db.posts.runCommand("text",{search:" w3cschool.cc"})

Użyj indeksowania pełnotekstowego mogą poprawić efektywność wyszukiwania.


Usuń pełnotekstowego indeksowania

Usunięcie istniejącego indeksu pełnotekstowego, można użyć polecenia find znaleźć nazwę indeksu:

>db.posts.getIndexes()

Uzyskać nazwę indeksu powyższego polecenia, w tym przypadku wskaźnik nazwany post_text_text, należy wykonać następujące polecenie, aby usunąć indeks:

>db.posts.dropIndex("post_text_text")