Stratio Lucene Index 3.0.9:INet 映射器的用途

Posted

技术标签:

【中文标题】Stratio Lucene Index 3.0.9:INet 映射器的用途【英文标题】:Stratio Lucene Index 3.0.9: Purpose of INet mapper 【发布时间】:2016-12-15 21:19:05 【问题描述】:

从 Stratio Lucene Index Plugin 的文档中,INet 映射器看起来很有趣,但背后没有太多动机:即。 https://github.com/Stratio/cassandra-lucene-index/blob/branch-3.0.9/doc/documentation.rst#inet-mapper.

鉴于它代表一个 IP 地址(键入),因此不同于简单的字符串,我可以对其应用什么样的查询?特别是,是否可以对其进行范围查询?

【问题讨论】:

【参考方案1】:

Lucene 索引 inet 映射器旨在映射 CQL inet 数据类型。它的唯一优点是使解析更加灵活。例如,给定以下数据:

CREATE TABLE t (
    pk int PRIMARY KEY,
    address inet
) ;

CREATE CUSTOM INDEX i ON t () 
USING 'com.stratio.cassandra.lucene.Index' 
WITH OPTIONS = 
  'refresh_seconds': '1',
  'schema': '
       fields : 
          address : type: "inet",
          address_s : type: "string", column: "address"
       
    ';

INSERT INTO t(pk, address) VALUES (0, '::FFFF:8:8:8');

所有这些查询都会找到索引行:

SELECT * FROM t WHERE expr(i, 'filter:type:"match", field:"address", value: "::ffFF:8:8:8"');
SELECT * FROM t WHERE expr(i, 'filter:type:"match", field:"address", value: "::0:ffff:8:8:8"');
SELECT * FROM t WHERE expr(i, 'filter:type:"match", field:"address", value: "0:0:0:0:ffff:8:8:8"');

但是,相同的查询不适用于字符串映射器:

SELECT * FROM t WHERE expr(i, 'filter:type:"match", field:"address_s", value: "::ffFF:8:8:8"');
SELECT * FROM t WHERE expr(i, 'filter:type:"match", field:"address_s", value: "::0:ffff:8:8:8"');
SELECT * FROM t WHERE expr(i, 'filter:type:"match", field:"address_s", value: "0:0:0:0:ffff:8:8:8"');
SELECT * FROM t WHERE expr(i, 'filter:type:"wildcard", field:"address_s", value: "*:8:8:8"');

除此之外,生成的 Lucene 字段是一个字符串字段,因此对于通配符或范围查询没有特殊处理,应该使用 IP 地址的扩展格式并且将具有字典式行为:

SELECT * FROM t WHERE expr(i, 'filter:type:"wildcard", field:"address", value: "*:8:8:8"');
SELECT * FROM t WHERE expr(i, 'filter:type:"range", field:"address", lower: "::FFFF:8:8:7"');

【讨论】:

以上是关于Stratio Lucene Index 3.0.9:INet 映射器的用途的主要内容,如果未能解决你的问题,请参考以下文章

Stratio cassandra-lucene-index 插件 + BoundStatements

如何使用 Stratio Cassandra Lucene Index 进行小写前缀过滤

Cassandra 与 Stratio lucene 索引

选择带有stratio lucene索引的cassandra的排序查询,版本> 2.2

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

Stratio cassandra maxClauseCount 设置为 1024