текстово търсене функция в MongoDB (както при 2.6) няма никакви вградени функции за размито/частично съвпадение на низове. Както отбелязахте, случаят на използване понастоящем се фокусира върху езикова и коренна поддръжка с основни булеви оператори и съвпадение на дума/фраза.
Има няколко възможни подхода, които да разгледате за размито съвпадение в зависимост от вашите изисквания и начина, по който искате да квалифицирате „ефективен“ (скорост, съхранение, време за разработчици, необходима инфраструктура и т.н.):
-
Внедрете поддръжка за размито/частично съвпадение в логиката на вашето приложение, като използвате някои от лесно достъпните алгоритми за сходство и звучене. Предимствата на този подход включват липсата на необходимост от добавяне на допълнителна инфраструктура и възможността за точно настройване на съответствието с вашите изисквания.
За някои по-подробни примери вижте:Efficient Техники за размито и частично съвпадение в MongoDB .
-
Интегрирайте с външен инструмент за търсене, който предоставя по-разширени функции за търсене. Това добавя известна сложност към вашето внедряване и вероятно е прекомерно само за въвеждане напред, но може да намерите други функции за търсене, които бихте искали да включите другаде във вашето приложение (напр. „като това“, близост на думата, фасетно търсене, ..).
Например вижте:Как да изпълним Fuzzy-Matching с Mongo Connector и Elastic Search . Забележка:размита заявкана ElasticSearch a> се базира на разстоянието на Левенщайн.
-
Използвайте библиотека за автоматично довършване като отворения код на Twitter
typeahead.js
, който включва механизъм за предложения и API за заявки/кеширане. Typeahead всъщност допълва всеки от другите подходи на бекенда и неговата (по избор) машина за предложения Bloodhound поддържа предварително извличане, както и кеширане на данни в локално хранилище.