Couchbase Lite 2.0.0 C#不区分大小写的查询

问题描述 投票:2回答:1

我在我的应用程序中使用Couchbase Lite 2.0.0并尝试对包含给定短语的术语执行不区分大小写的字符串搜索,例如如果值是hello, world!那么短语o, w应该返回它,但ow不应该。

根据couchbase docs应该能够用LIKE运算符和通配符匹配来实现这一点:

请注意,由于喜欢不区分大小写匹配,以下查询将返回名称与“皇家工程师博物馆”,“皇家工程师博物馆”,“皇家工程师博物馆”等相匹配的“地标”类型文档。

所以我的代码是;

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

这可以正常工作除了它仍然区分大小写。

我尝试过使用.Collate(Collation.ASCII().IgnoreCase(true)

我也尝试过使用带有(?i)模式的REGEX运算符,但这引起了恐慌。

我正在考虑使用全文搜索功能,但这对于这种简单的情况可能有些过分。

这是一个错误还是我缺少的东西?

c# couchbase sql-like case-insensitive couchbase-lite
1个回答
2
投票

他们最近将其更改为区分大小写!

为了使它不区分大小写,他们现在建议像这样使用Function.Lower

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

看起来有点hacky。希望你没有deal with any Turkish i's

有关详情,请参阅......

Couchbase lite 2.0., DB22, like became case sensitive?

Introducing the Query Interface in Couchbase Mobile 2.0

Case Insensitive like

© www.soinside.com 2019 - 2024. All rights reserved.