2016-02-18 3 views
2

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

Это мой 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; 

Мой вопрос:

Как я мог сортировать возвращаемые результаты, чтобы убедиться, что все проверенные пользователи между елями t 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; 
+0

с этим синтаксисом перечисленных пользователей ** только ** Проверены. То, что я хотел сделать, это получить сначала проверенных пользователей, а затем не проверенных. Можно ли достичь одного запроса? Или мне нужно сделать два запроса? Один для проверки и другой для не проверенных. –

+0

Хотите попасть первым 15 проверенным пользователям, а затем всем, кто не проверял пользователей? Или просто получить не более 15 результатов, удовлетворяющих шаблону шаблона, отсортированного по is_verified? Какова цель предложения LIMIT? –

+0

Возможно, вам нужно добавить предложение сортировки, чтобы упорядочить строки с помощью «is_verified»: –

Смежные вопросы