Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Cassandra Lucene索引布尔语法_Java_Cassandra_Lucene_Stratio_Cassandra Lucene Index - Fatal编程技术网

Java Cassandra Lucene索引布尔语法

Java Cassandra Lucene索引布尔语法,java,cassandra,lucene,stratio,cassandra-lucene-index,Java,Cassandra,Lucene,Stratio,Cassandra Lucene Index,我正在我的Cassandra数据库中执行用户搜索系统。为此,我安装了Stratio。 我可以通过用户名查找用户,但问题如下: 这是我的Cassandra用户表和Lucene索引: CREATE TABLE user ( username text PRIMARY KEY, email text, password text, is_verified boolean, lucene text ); CREATE CUSTOM INDEX search_mai

我正在我的Cassandra数据库中执行用户搜索系统。为此,我安装了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)。

您可以使用此搜索:

SELECT * FROM user WHERE lucene = '{filter: {type:"boolean", must:[
    {type : "wildcard", field : "username", value : "*%s*"},
    {type : "match", field : "is_verified", value : true}
]}}' LIMIT 15;

使用此语法,仅验证列出的用户。我想做的是首先得到经过验证的用户,然后是未经验证的用户。是否可以在一个查询中实现?或者我应该做两个查询?一个用于已验证,另一个用于未验证。是否先获取15个已验证用户,然后获取所有未验证用户?或者只得到不超过15个满足通配符模式排序的结果,是否验证?LIMIT子句的用途是什么?可能您需要添加一个排序子句来按“is_verified”对行进行排序:
SELECT*FROM user WHERE lucene='{filter:{type:{wildcard],field:“username”,value:“*%s*”},sort:{fields:[{field:“is_verified”,reverse:true}}}}限制15