MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongodb текстово търсене в множество полета

Концепцията за "търсене на текст" в mongodb не работи така. Вместо това концепцията тук е, че дефинирате „множество полета“ във вашия "текстов индекс" и просто потърсете термините.

Да приемем, че имате „неща“ като това:

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

Тогава решавам да създам текстов индекс като този:

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

След това правя търсене с помощта на $text :

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

Което дава резултатите:

{
    "_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
}

Което „и двете“ търси във всички полета, посочени в индекса, и също така отчита допълнителната „тежест“, дадена на полето „предградие“ в този случай, за да го направи още по-популярно класиране.

Така че не използвате допълнителни условия в термините, поставяте „всички“ термини в „един“ низ на текстова заявка, за да търсите в множество полета.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да изчистите стари/застояли сесии, когато използвате хранилище за сесии на Mongo DB в Ruby on Rails 3.2

  2. Включете всички съществуващи полета и добавете нови полета към документа

  3. Mongodb - Добавете уникален индекс към съществуваща колекция

  4. Актуализиране на свойството на вграден документ в Mongodb

  5. TypeError при статичен метод на мангуст модел