Как создать подобный запрос в Кассандре? - PullRequest
4 голосов
/ 28 апреля 2011

В моем пространстве ключей

posts = [
    #key
    'post1': {
        # columns and value
        'url': 'foobar.com/post1',
        'body': 'Currently has client support FOOBAR for the following programming languages..',
    },
    'post2': {
        'url': 'foobar.com/post2',
        'body': 'The table with the following table FOOBAR structure...',
    },
   #  ... ,
}

Как создать подобный запрос в Кассандре, чтобы получить все сообщения, содержащие слово 'FOOBAR'? В SQL это SELECT * FROM POST WHERE BODY LIKE '%FOOBAR%', а в Кассандре?

Ответы [ 3 ]

5 голосов
/ 28 апреля 2011

Единственный способ сделать это эффективно - использовать систему полнотекстового поиска, такую ​​как https://github.com/tjake/Solandra (Solr-on-cassandra). Конечно, вы можете бросать свои собственные, используя те же приемы вручную, но обычно это не требуется.

Обратите внимание, что это верно и для баз данных SQL: они будут переводить% FOO% в сканирование таблицы, если только вы не используете расширение FTS, такое как tsearch2 из postgresql.

0 голосов
/ 06 мая 2016

В Cassandra 3.4 добавлена ​​поддержка LIKE в CSQL.Итак, наконец, это доступно изначально.

0 голосов
/ 28 апреля 2011

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

...