【问题标题】:Stratio Lucene Index 3.0.9: Purpose of INet mapperStratio Lucene Index 3.0.9:INet 映射器的用途
【发布时间】: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 地址(键入),因此不同于简单的字符串,我可以对其应用什么样的查询?特别是,是否可以对其进行范围查询?

【问题讨论】:

    标签: lucene stratio cassandra-lucene-index


    【解决方案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"}}');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-15
      相关资源
      最近更新 更多