案例敏感性在Cassandra的二级指数中没有达到预期的效果

时间:2018-02-16 05:25:26

标签: apache cassandra cassandra-3.0

我在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'为Case In-Sensitivity,当我执行以下查询时,我能够看到它尝试匹配确切的情况(即)它的值为'TestName'但是当我尝试执行以下查询,它无法检索数据,

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

成功进行了以下查询,

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

有人能说出原因和错误吗?

谢谢,
哈利

1 个答案:

答案 0 :(得分:2)

case_sensitive不适用于standardAnalyzer,适用于NonTokenizingAnalyzer

Valid StandardAnalyzer Options

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

默认情况下,tokenization_normalize_lowercasetokenization_normalize_uppercase为false,因此会进行区分大小写搜索。