2016-12-15 12 views
0

Из документов для плагинов индекса Stratio Lucene модуль отображения INet выглядит интересным, но за ним не так много мотивации: т.е. https://github.com/Stratio/cassandra-lucene-index/blob/branch-3.0.9/doc/documentation.rst#inet-mapper.Stratio Lucene Index 3.0.9: Назначение разработчика INet

Учитывая, что он представляет собой IP-адрес (типизированный) и поэтому отличается от простой строки, какие запросы я могу применить к нему? В частности, можно ли на него задавать дальний запрос?

ответ

1

Индексный указатель индекса Lucene предназначен для отображения типа данных 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-адреса и иметь лексикограф hical behavior:

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"}}'); 

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

  • Нет связанных вопросов^_^