区分大小写在 Cassandra 的二级索引中未按预期工作

Case sensitivity is not working as expected in Secondary Index in Cassandra

我在 Cassandra 的其中一列中使用了二级索引,

注意:该列也是聚簇键。

CREATE CUSTOM INDEX testPoolName_idx ON Keyspace.TestPool (name) USING 'org.apache.cassandra.index.sasi.SASIIndex' WITH OPTIONS = {'mode': 'CONTAINS', 'analyzer_class': 'org.apache.cassandra.index.sasi.analyzer.StandardAnalyzer', 'case_sensitive': 'false'};

我相信 case_sensitive 'false' 不区分大小写,当我执行以下查询时,我能够看到它试图匹配确切的大小写(即)它的值为'TestName' 但是当我尝试执行以下查询时它无法检索数据,

Select * from TestPool WHERE "partitionId" =  'partitionId' AND "name" LIKE  '%test%';

以下查询成功,

Select * from TestPool WHERE "partitionId" =  'partitionId' AND "name" LIKE  '%Test%';

有人能说说为什么吗?有什么问题吗?

case_sensitive 不是 standardAnalyzer 的有效选项,而是 NonTokenizingAnalyzer.

Valid StandardAnalyzer Options

因为值为 TestName,搜索 %Test% 有效。

默认情况下 tokenization_normalize_lowercasetokenization_normalize_uppercase 为假,因此它将进行区分大小写的搜索。