Как искать в Кассандре без учета регистра?

Я учусь cassandra с Python и особенно с Django 2 с помощью cqlengine, Я пытаюсь найти в базе данных, где я ищу строку, которая начинается с параметра поиска, но я хочу, чтобы она не чувствительна к регистру. Так что, если у меня есть следующие данные

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

Так что, если я хочу найти строку, которая начинается с fooЯ должен получить все три записи. Я искал решение и нашел один комментарий к stackru, что в cassandra все есть байты, и поэтому это невозможно, но я также нашел что-то, что говорит, что для этого нужно написать собственную функцию.

Для Django я использую https://github.com/r4fek/django-cassandra-engine для создания модели. Это реализация cqlengine для django. Итак, когда я создаю свою модель, нужно ли что-нибудь добавить в нее? Моя тестовая модель

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

Я искал это в документации по cqlengine, но не смог найти ничего полезного. Поэтому я ищу помощь здесь на stackru.

Благодарю.

1 ответ

Вы можете использовать так называемый SASI-индекс (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'
};

Хотя я не уверен, сможет ли cqlengine получить эту функциональность из коробки или нет.

Вот очень подробный пост в блоге о SASI-индексах.

Другие вопросы по тегам