Логический синтаксис 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;