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

Как работи $text търсенето в MongoDB?

Търсенето на текст в MongoDB използва библиотеката на Snowball stemming за намаляване на думите до очаквана коренна форма (или основа ) въз основа на общи езикови правила. Алгоритмичното произтичане осигурява бързо редуциране, но езиците имат изключения (като неправилни или противоречиви модели на спрежение на глаголи), които могат да повлияят на точността. Въведение в Snowball включва добър преглед на някои от ограниченията на алгоритмичното произтичане.

Вашият пример за walking води до walking и съответства според очакванията.

Въпреки това, вашият пример за trekking води до trekk така че не съвпада с ключовата ви дума за търсене на trek .

Можете да потвърдите това, като обясните заявката си и прегледате parsedTextQuery информация, която показва използваните произволни думи за търсене:

db.events.find({$text: {$search: 'Trekking'} }).explain().queryPlanner.winningPlan.parsedTextQuery
{
​   "terms" : [
​       "trekk"
​   ],
​   "negatedTerms" : [ ],
​   "phrases" : [ ],
​   "negatedPhrases" : [ ]
}

Можете също да проверите очакваното произтичане на снежна топка, като използвате онлайн демонстрация на снежна топка или като намерите библиотека на Snowball за предпочитания от вас език за програмиране.

За да заобиколите изключения, които обикновено могат да повлияят на вашия случай на употреба, можете да помислите за добавяне на друго поле към вашия текстов индекс с ключови думи, които да повлияят на резултатите от търсенето. За този пример бихте добавили trek като ключова дума, така че събитието да бъде описано като trekking също съвпада в резултатите от вашето търсене.

Има и други подходи за по-точна флексия, които обикновено се наричат ​​лематизация . Алгоритмите за лематизация са по-сложни и започват да се насочват към домейна на обработка на естествен език . Има много набори от инструменти с отворен код (и комерсиални), които можете да използвате, ако искате да приложите по-разширено текстово търсене във вашето приложение, но те са извън текущия обхват на функцията за текстово търсене на MongoDB.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как мога да тествам нова агрегираща рамка на Mongodb

  2. как мога да създам моята заявка за mongodb въз основа на входа от потребителя в node.js?

  3. mongoDB Преименуване на вградено поле

  4. MongoDB - не можете да използвате .explain(), за да получите информация за заявка в C# код?

  5. грешка при свързване на пролетното зареждане на mongodb