Couchbase Lite 2.0.0 C# 不区分大小写的查询
Couchbase Lite 2.0.0 C# case insensitive query
我在我的应用程序中使用 Couchbase Lite 2.0.0 并尝试对包含给定短语的术语进行不区分大小写的字符串搜索,例如如果值为 hello, world!
,那么短语 o, w
应该 return 但 ow
不应该。
根据couchbase docs是应该可以用LIKE
运算符和通配符匹配来实现的:
Note that since like does a case insensitive match, the following query will return "landmark" type documents with name matching "Royal Engineers Museum", "royal engineers museum", "ROYAL ENGINEERS MUSEUM" and so on.
所以我的代码是;
...
.Where(Expression.Property(myPropertyName).Like(Expression.String($"%{phrase}%"));
...
这按预期工作除了它仍然区分大小写。
我试过使用 .Collate(Collation.ASCII().IgnoreCase(true)
我也尝试过在 (?i)
模式下使用 REGEX 运算符,但这引起了恐慌。
我正在考虑使用全文搜索功能,但对于这种简单的情况,这可能有点过分了。
这是错误还是我遗漏了什么?
他们最近将其更改为区分大小写!
为了不区分大小写,他们现在建议像这样使用 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?
我在我的应用程序中使用 Couchbase Lite 2.0.0 并尝试对包含给定短语的术语进行不区分大小写的字符串搜索,例如如果值为 hello, world!
,那么短语 o, w
应该 return 但 ow
不应该。
根据couchbase docs是应该可以用LIKE
运算符和通配符匹配来实现的:
Note that since like does a case insensitive match, the following query will return "landmark" type documents with name matching "Royal Engineers Museum", "royal engineers museum", "ROYAL ENGINEERS MUSEUM" and so on.
所以我的代码是;
...
.Where(Expression.Property(myPropertyName).Like(Expression.String($"%{phrase}%"));
...
这按预期工作除了它仍然区分大小写。
我试过使用 .Collate(Collation.ASCII().IgnoreCase(true)
我也尝试过在 (?i)
模式下使用 REGEX 运算符,但这引起了恐慌。
我正在考虑使用全文搜索功能,但对于这种简单的情况,这可能有点过分了。
这是错误还是我遗漏了什么?
他们最近将其更改为区分大小写!
为了不区分大小写,他们现在建议像这样使用 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?