我在我的应用中使用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运算符,但这引起了恐慌。
我正在考虑使用全文搜索功能,但这对于这种简单的情况来说可能有点过头了。
这是一个错误还是我缺少的东西?
答案 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?