Логический синтаксис Cassandra Lucene Index

Я выполняю поисковую систему пользователей в моей базе данных Cassandra. Для этого я установил Cassandra Lucene Index от Stratio. Я могу искать пользователей по имени пользователя, но проблема заключается в следующем:

Это моя таблица пользователей Cassandra и индекс Lucene:

CREATE TABLE user (
    username text PRIMARY KEY,
    email text,
    password text,
    is_verified boolean,
    lucene text
);
CREATE CUSTOM INDEX search_main ON user (lucene) USING 'com.stratio.cassandra.lucene.Index' WITH OPTIONS = {
    'refresh_seconds': '3600',
    'schema': '{
        fields : {
            username : {type : "string"},
            is_verified : {type : "boolean"}
        }
    }'
};

Это обычный запрос, выполняемый для поиска пользователя по имени пользователя:

SELECT * FROM user WHERE lucene = '{filter: {type : "wildcard", field : "username", value : "*%s*"}}' LIMIT 15;

Мой вопрос:

Как можно отсортировать возвращаемые результаты, чтобы убедиться, что все проверенные пользователи находятся между первыми 15 результатами в запросе? (Предел 15).

1 ответ

Решение

Вы можете использовать этот поиск:

SELECT * FROM user WHERE lucene = '{filter: {type:"boolean", must:[
    {type : "wildcard", field : "username", value : "*%s*"},
    {type : "match", field : "is_verified", value : true}
]}}' LIMIT 15;
Другие вопросы по тегам