Couchbase Lite 2.0.0 C # без учета регистра - PullRequest
0 голосов
/ 12 мая 2018

Я использую Couchbase Lite 2.0.0 в своем приложении и пытаюсь выполнить поиск строки без учета регистра для терминов, которые содержат данную фразу, например, если значение hello, world!, то выражение o, w должно возвращать его, а ow не должно.

В соответствии с документами couchbase должно быть в состоянии достичь этого с оператором LIKE и подстановочными совпадениями:

Обратите внимание, что, поскольку like делает нечувствительное к регистру совпадение, следующий запрос вернет документы типа "ориентир" с именами, соответствующими "Королевскому музею инженеров", "Королевскому музею инженеров", "МУЗЕЙ КОРОЛЕВСКИХ ИНЖЕНЕРОВ" и т. Д.

Итак, мой код:

...
.Where(Expression.Property(myPropertyName).Like(Expression.String($"%{phrase}%"));
...

Это работает, как и ожидалось ЗА ИСКЛЮЧЕНИЕМ оно все еще чувствительно к регистру.

Я пытался использовать .Collate(Collation.ASCII().IgnoreCase(true)

Я также пытался использовать оператор REGEX с режимом (?i), но это вызвало панику.

Я думаю об использовании функции полнотекстового поиска, но это, вероятно, излишне для этой простой ситуации.

Это ошибка или мне чего-то не хватает?

1 Ответ

0 голосов
/ 13 мая 2018

Они недавно изменили его, чтобы он учитывал регистр!

Чтобы сделать его нечувствительным к регистру, они теперь рекомендуют использовать Function.Lower, например:

...
.Where(Function.Lower(Expression.Property(myPropertyName))
    .Like(Expression.String($"%{phrase?.ToLower()}%"));
...

Кажется, немного хакерским.Надеюсь, вам не нужно иметь дело с любым турецким я !

Для получения дополнительной информации см. ...

Couchbase lite 2.0., DB22, вроде сталс учетом регистра?

Представление интерфейса запросов в Couchbase Mobile 2.0

Без учета регистра like

...