我在我的应用程序中使用Couchbase Lite 2.0.0,并试图对包含给定短语的词进行不区分大小写的字符串搜索,例如,如果值是hello, world!,那么短语o, w应该返回它,但是ow不应该返回它。
根据couchbase文档应该能够实现这一点与LIKE运算符和通配符匹配:
请注意,由于与大小写不敏感的匹配一样,下面的查询将返回“地标”类型文档,其名称与“皇家工程师博物馆”、“皇家工程师博物馆”、“皇家工程师博物馆”等名称匹配。
所以我的代码是;
...
.Where(Expression.Property(myPropertyName).Like(Expression.String($"%{phrase}%"));
...除了仍然区分大小写外,它的工作原理与预期一样。
我试过用.Collate(Collation.ASCII().IgnoreCase(true)
我也尝试使用带有(?i)模式的REGEX运算符,但这引起了恐慌。
我正在考虑使用全文搜索功能,但对于这种简单的情况来说,这可能是过分了。
这是个窃听器还是我遗漏了什么?
发布于 2018-05-12 22:38:25
他们最近改变了它的大小写敏感!
为了使它不区分大小写,他们现在建议使用这样的Function.Lower:
...
.Where(Function.Lower(Expression.Property(myPropertyName))
.Like(Expression.String($"%{phrase?.ToLower()}%"));
...看上去有点烦人。希望你不需要和任何土耳其人打交道!
更多信息见..。
https://stackoverflow.com/questions/50309508
复制相似问题