区分大小写在 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_lowercase
和 tokenization_normalize_uppercase
为假,因此它将进行区分大小写的搜索。
我在 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_lowercase
和 tokenization_normalize_uppercase
为假,因此它将进行区分大小写的搜索。