我在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%';
有人能说出原因和错误吗?
谢谢,
哈利
答案 0 :(得分:2)
case_sensitive
不适用于standardAnalyzer
,适用于NonTokenizingAnalyzer
。
Valid StandardAnalyzer Options
由于值为TestName
,因此搜索%Test%
有效。
默认情况下,tokenization_normalize_lowercase
和tokenization_normalize_uppercase
为false,因此会进行区分大小写搜索。