Как искать в Кассандре без учета регистра? - PullRequest
0 голосов
/ 20 мая 2018

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

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

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

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

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

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

Спасибо.

1 Ответ

0 голосов
/ 20 мая 2018

Вы можете использовать так называемый 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-индексах.

...