Ist es möglich, Kleinbuchstaben Präfix Filterung/Abfrage mit Stratio Cassandra Lucene Index zu tun? Ich konnte keine Dokumentation zu diesem speziellen Anwendungsfall finden.Wie filtern Sie Kleinbuchstaben Präfix mit Stratio Cassandra Lucene Index
0
A
Antwort
3
Das Gehäuse der Abfragen hängt davon ab, wie die Arbeit der Lucene text analyzer während der Indexierung verwendet wird, und kann nicht in der Abfragezeit entschieden werden. Wenn Sie Präfixsuchen ohne Beachtung der Groß-/Kleinschreibung durchführen möchten, sollten Sie einen Mapper mit einem Analysator verwenden, der Kleinbuchstaben erzeugt. Diese Begriffe werden zur Suchzeit indiziert und abgeglichen. Zum Beispiel:
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
Vielen Dank! Genau das, was ich gesucht habe. – user1019182