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

时间:2018-05-12 18:36:01

标签: c# couchbase sql-like case-insensitive couchbase-lite

我在我的应用中使用Couchbase Lite 2.0.0并尝试对包含给定短语的字词进行不区分大小写的字符串搜索,例如如果值为hello, world!,则短语o, w应返回,但ow不应返回。

根据couchbase docs应该可以使用LIKE运算符和通配符匹配来实现此目的:

  

请注意,由于like不区分大小写,因此以下查询将返回" landmark"输入名称相匹配的文件"皇家工程师博物馆","皇家工程师博物馆","皇家工程师博物馆"等等。

所以我的代码是;

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

这按预期工作 EXCEPT 它仍然区分大小写。

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

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

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

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

1 个答案:

答案 0 :(得分: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