cassandra lucene - 如何获得更高的分数

Posted

技术标签:

【中文标题】cassandra lucene - 如何获得更高的分数【英文标题】:cassandra lucene - how to score a field higher 【发布时间】:2017-02-21 13:29:52 【问题描述】:

我希望表中的某个字段得分高于另一个字段。 例如,我有两列名称和姓氏。如果我搜索“Hans”,我希望名称中的内容得分更高。 如何使用 official examples 中的 cql 语句执行此操作。

问候 图吉

【问题讨论】:

【参考方案1】:

如doc 中所述,每种搜索类型都有一个提升 选项,允许用户为每个不同的查询设置权重。

您的用例应如下所示:

CREATE KEYSPACE test with replication = 
    'class' : 'SimpleStrategy', 'replication_factor' : '1' 
; 

CREATE TABLE test.users (
    id bigint PRIMARY KEY,
    name text,
    surname text
);

CREATE CUSTOM INDEX test_users_idx ON test.users() 
USING 'com.stratio.cassandra.lucene.Index'
WITH OPTIONS = 
    'refresh_seconds': '1',
    'schema': '
        fields: 
            name: type: "string",
            surname:type:"string"
        
    '
;

INSERT INTO test.users(id, name, surname) VALUES (1, 'Hans', 'Albers');
INSERT INTO test.users(id, name, surname) VALUES (2, 'Quintina', 'Koch');
INSERT INTO test.users(id, name, surname) VALUES (3, 'Orlando', 'Schwarz');
INSERT INTO test.users(id, name, surname) VALUES (4, 'Federico', 'Hans');
INSERT INTO test.users(id, name, surname) VALUES (5, 'Berenice', 'Schwarz');
INSERT INTO test.users(id, name, surname) VALUES (6, 'Zaida', 'Koch');

SELECT * FROM test.users WHERE expr(test_users_idx,'
    query: 
        type : "boolean", 
        should : [
            type: "match", field: "name", value: "Hans", boost: 1.5,
            type: "match", field: "surname", value: "Hans", boost: 1.0
        ]
    
');

【讨论】:

以上是关于cassandra lucene - 如何获得更高的分数的主要内容,如果未能解决你的问题,请参考以下文章

Cassandra Lucene 索引布尔语法

重启 Cassandra 后,Lucene 索引不起作用

saveToCassandra 与 Cassandra Lucene 插件一起使用吗?

找不到自定义索引器类“com.stratio.cassandra.lucene.Index”

Stratio cassandra-lucene-index 插件 + BoundStatements

Cassandra 与 Stratio lucene 索引