2016-04-06 6 views

答えて

3

クエリのケーシングは、インデックス作成中にLucene text analyzerの作業がどのように使用されているかによって異なり、クエリ時には決定できません。大文字と小文字を区別しない接頭辞検索を行う場合は、小文字の語句を生成するアナライザーを使用してマッパーを使用する必要があります。これらの用語は、検索時に索引付けされ、照合されます。例:

CREATE KEYSPACE test 
WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor': 1}; 
USE test; 
CREATE TABLE test (
    id INT PRIMARY KEY, 
    body TEXT 
); 

CREATE CUSTOM INDEX test_index ON test() 
USING 'com.stratio.cassandra.lucene.Index' 
WITH OPTIONS = { 
    'refresh_seconds' : '1', 
    'schema' : '{ 
     fields : { 
      body1 : {type :"string", column:"body", case_sensitive:false}, 
      body2 : {type :"string", column:"body", case_sensitive:true} 
     } 
    }' 
}; 

INSERT INTO test(id,body) VALUES (1, 'foo'); 
INSERT INTO test(id,body) VALUES (2, 'Foo'); 
INSERT INTO test(id,body) VALUES (3, 'bar'); 
INSERT INTO test(id,body) VALUES (4, 'Bar'); 


SELECT * FROM test WHERE expr(test_index, 
    '{filter:{type:"prefix", field:"body2", value:"f"}}'); -- Returns foo 
SELECT * FROM test WHERE expr(test_index, 
    '{filter:{type:"prefix", field:"body2", value:"F"}}'); -- Returns Foo 

SELECT * FROM test WHERE expr(test_index, 
    '{filter:{type:"prefix", field:"body1", value:"f"}}'); -- Returns foo and Foo 
SELECT * FROM test WHERE expr(test_index, 
    '{filter:{type:"prefix", field:"body1", value:"F"}}'); -- Returns no results 
+1

ありがとうございました!まさに私が探していたもの。 – user1019182

関連する問題