cassandra - 如何在具有 SAI 索引的 TEXT 列上使用 CONTAINS?
问题描述
根据这篇文章:https : //docs.datastax.com/en/storage-attached-index/6.8/sai/saiFaqs.html , TEXT 类型支持 CONTAINS 操作。但我收到这样的错误:com.datastax.driver.core.exceptions.InvalidQueryException: Cannot use CONTAINS on non-collection column
谁能解释如何在 TEXT 列上使用 SAI 索引以有可能使用 CONTAINS 操作(如 SQL LIKE 操作)在此列中进行搜索?
PS 如果在具有 TEXT 值列表的列上创建 SAI 索引,我可以使用 CONTAINS 操作。但是不想自己生成所有子字符串的组合。至少根据文档,应该可以在 TEXT 上使用 CONTAINS ...
数据库架构:
CREATE TABLE IF NOT EXISTS some_table (
id text,
data text,
list_for_search list<text>,
PRIMARY KEY (id))
WITH CLUSTERING ORDER BY (id ASC);
CREATE CUSTOM INDEX IF NOT EXISTS some_table_search_idx
ON some_table (data)
USING 'StorageAttachedIndex' WITH OPTIONS = {'case_sensitive': 'false'};
DSE 6.8.3
解决方案
CONTAINS
和它的变体,CONTAINS KEY
旨在CONTAINS VALUES
搜索文本类型(映射、集合和列表)集合中的特定字符串值 - 不支持在文本中搜索子字符串(这LIKE
是不支持的任务(然而?))。
根据文档:
不支持:
LIKE
,IN
,OR
推荐阅读
- java - 在 mongodb spring-data 中使用 dbref 更新文档
- pyinstaller - 分发打包 - Python
- jquery - 如何使用 jQuery 3.x 提供的安全补丁更新最新的 jQuery 1.x 版本?
- c++ - 在 Direct2D 中渲染 360 度视频
- azure - 如何以编程方式更改订阅的服务管理员
- eclipse - 无法从 Eclipse 中启动 WebLogic 服务器
- ruby - 如何在退出 IO.popen 生成的外部命令之前执行给定的代码块?
- android - 三个js兼容Android firefox
- python - Python 类和实例属性内存使用情况
- r - 在R中将字符串转换为年月?