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

Mongodb przeszukuje wiele pól tekstowych

Koncepcja „wyszukiwania tekstu” w mongodb nie działa w ten sposób. Zamiast tego koncepcja polega na tym, że definiujesz „wiele pól” w swoim "indeksie tekstowym" i po prostu wyszukaj terminy.

Załóżmy, że masz takie „rzeczy”:

{ "_id" : ObjectId("55ba22294bde97b581332979"), "title" : "Hello there" },
{ "_id" : ObjectId("55ba22414bde97b58133297a"), "title" : "Hello world" },
{
    "_id" : ObjectId("55ba22594bde97b58133297b"),
    "title" : "Hello world",
    "suburb" : "melbourne"
}

Następnie postanawiam utworzyć indeks tekstowy w następujący sposób:

db.junk.createIndex(
   { "title": "text", "suburb": "text" },
   { "weights": {  "title": 10 } }
)

Następnie wyszukuję używając $text :

db.junk.find(
   { "$text": { "$search": "Hello World Melbourne" } },
   { "score": { "$meta": "textScore" } }
).sort({ "score": { "$meta": "textScore" } })

Co daje wyniki:

{
    "_id" : ObjectId("55ba22594bde97b58133297b"),
    "title" : "Hello world",
    "suburb" : "melbourne",
    "score" : 11.5
},
{
    "_id" : ObjectId("55ba22414bde97b58133297a"),
    "title" : "Hello world",
    "score" : 1.5
},
{
    "_id" : ObjectId("55ba22294bde97b581332979"),
    "title" : "Hello there",
    "score" : 1
}

Która „oba” przeszukuje wszystkie pola określone w indeksie, a także uwzględnia w tym przypadku dodatkową „wagę” przypisaną polu „przedmieścia”, aby uczynić je jeszcze bardziej popularnym rankingiem.

Aby nie używać dodatkowych warunków w terminach, wstawiasz „wszystkie” terminy w ciągu zapytania tekstowego „jeden”, aby wyszukiwać w wielu polach.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pobieranie zagnieżdżonych danych z MongoDB do ramki danych Pandas

  2. Czy istnieje sposób na "ładne" wydrukowanie danych wyjściowych powłoki MongoDB do pliku?

  3. Mongodb Aggregation Framework:Czy $group używa indeksu?

  4. elementy aktualizacji mongoid w tablicy

  5. Jak skonfigurować mongodb do usuwania starych plików dziennika?