Kotlin. Поставили ему задачу реализовать full - text search среди записей MongoDB Realm с игнорированием заглавных и строчных буков
Он реализовал, но говорит, что невозможно сделать игнорирование для русского языка. Это работает только для английского языка
Можете подсказать, на сколько это корректная информация от него?
https://www.mongodb.com/docs/manual/reference/operator/query/text/#mongodb-query-op.-text
У нас приложение завязано на Sync с MongoDB Atals и MongoDB Realm. Это не совсем то, что нужно, на сколько я понимаю (могу ошибаться)
Как он реализовал можете спалить? Просто интересно какое решение прлучилось
звучит как пиздёжь
Вот что у него в коде. Кириллица у него не работает с case-insensetive. Говорит, что реализовать никак нельзя в MongoDB Realm, только через костыли (либо напрямую работа с MongoDB)
Вам нужен индекс с соответствующей collation. https://www.mongodb.com/docs/manual/core/index-text/#case-insensitivity
Это решение для MongoDB Realm + Котлина? Разве не для MongoDB просто часом?
да это именно в самой монге. В вашем случае самым простым вариантом будет сделать рядом поле title_ru_low и туда сохранять строку в low case и с ней уже обычным поиском
Это костыль выходит :( Может же в тексте быть с большой буквой в начале. В таком случае не найдёт пост нужный
с моей точки зрения - реалм костыль)
Он подкупил нас бесплатным full text search 😅
а можно ссылочку где это написано и возможности этого самого fts?
Возможно я неправильно выразился. Используем для поиска filter / where в MongoDB Realm. Так как мы используем связку MongoDB Atlas + Sync в MongoDB Realm, то он для нас выступает в роли full - text search https://www.mongodb.com/docs/realm/sdk/swift/examples/filter-data/
вот, а fts там особо то и не заявлен, а только поиск по подстроке да еще и явно указано что только для latin https://www.mongodb.com/docs/realm/sdk/java/api/io/realm/RealmQuery/#std-label-io_realm_RealmQuery_contains
Забавно вышло, что мы использовали монгу только из - за этого. На IOS все отлично работает с русским языком, а вот андроид подкачал нас
в сфите так то тоже в доке по вашей ссылке указано что только латиница для case-insensitive: https://www.mongodb.com/docs/realm/sdk/swift/examples/filter-data/#string-operators в реальности получается поддерживается?
Да Но там же NSPredicate можно использовать в IOS. Возможно из - за этого ищет адекватно на русском
там такая же приписка в доке, но возможно както действительно внутрях отрабатывает
Смотрите Sync Schema возможно для swift kotlin есть различия. Все должно работать одинаково. Или collection разные. Поверьте index
Обсуждают сегодня