gpt4 book ai didi

python - 如何在不区分大小写的cassandra中进行搜索?

转载 作者:行者123 更新时间:2023-11-28 22:18:34 27 4
gpt4 key购买 nike

我正在使用 Python 学习 cassandra,特别是使用 cqlengine 学习 Django 2。我正在尝试在数据库中搜索以搜索参数开头的字符串,但我想让它不区分大小写。所以如果我有以下数据

-------------------------------
| PKID | String |
-------------------------------
| 1234 | FOObar |
| 4321 | FoOBar |
| 5665 | IreALLy |
| 5995 | DontknoW |
| 8765 | WHatTOdo |
| 4327 | foobaR |
-------------------------------

因此,如果我想搜索以 foo 开头的字符串,我应该获取所有三个记录。我搜索了解决方案,发现关于 stackoverflow 的一条评论说在 cassandra 中一切都是字节,所以这是不可能的,但我也发现了一些东西说我需要编写自定义函数来完成它。

对于 Django,我使用 django-cassandra-engine创建模型。它是 django 的 cqlengine 的实现。那么当我创建模型时,是否需要添加任何内容?我的测试模型是

class TestModel(DjangoCassandraModel):
key_id = columns.UUID(primary_key=True, default=uuid.uuid4)
string = columns.Text()

我在 cqlenengine 文档中查找它,但找不到任何有用的信息。所以我在这里寻求有关 stackoverflow 的帮助。

谢谢。

最佳答案

您可以使用所谓的SASI-index (SSTable Attached Secondary Index)在 Cassandra 本身中执行此操作(尽管它被标记为实验性功能)。您可以定义用于前缀、范围或子字符串搜索的索引,并且在配置索引时,您可以指定您想要不区分大小写的字符串:

CREATE CUSTOM INDEX index_name ON table (field) 
USING 'org.apache.cassandra.index.sasi.SASIIndex'
WITH OPTIONS = {
'mode': 'PREFIX', // if you want to search only for 'starting with'
'case_sensitive': 'false'
};

虽然我不确定,但 cqlenengine 是否会开箱即用地使用此功能。

这里是 very detailed blog post关于 SASI 索引。

关于python - 如何在不区分大小写的cassandra中进行搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50431759/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com