CREATE CUSTOM INDEX ON test.escape(val) USING 'org.apache.cassandra.index.sasi.SASIIndex' WITH OPTIONS = {'mode': 'CONTAINS', 'analyzer_class': 'org.apache.cassandra.index.sasi.analyzer.NonTokenizingAnalyzer', 'case_sensitive': 'false'};
I don't see any problem in the results you got SELECT * FROM escape WHERE val LIKE '%%esc%'; --> Give all results *containing* '%esc' so *%esc*apeme is a possible match and also escape*%esc* SELECT * FROM escape WHERE val LIKE 'escape%%' --> Give all results *starting* with 'escape%' so *escape%*me is a valid result and also *escape%*esc On Tue, Sep 13, 2016 at 5:58 PM, Mikhail Krupitskiy < mikhail.krupits...@jetbrains.com> wrote: > Thanks for the reply. > Could you please provide what index definition did you use? > With the index from my script I get the following results: > > cqlsh:test> select * from escape; > > id | val > ----+----------- > 1 | %escapeme > 2 | escape%me > * 3 | escape%esc* > > Contains search > > cqlsh:test> SELECT * FROM escape WHERE val LIKE '%%esc%'; > > id | val > ----+----------- > 1 | %escapeme > 3 > * | escape%esc*(2 rows) > > > Prefix search > > cqlsh:test> SELECT * FROM escape WHERE val LIKE 'escape%%'; > > id | val > ----+----------- > 2 | escape%me > 3 > * | escape%esc* > > Thanks, > Mikhail > > On 13 Sep 2016, at 18:16, DuyHai Doan <doanduy...@gmail.com> wrote: > > Use % to escape % > > cqlsh:test> select * from escape; > > id | val > ----+----------- > 1 | %escapeme > 2 | escape%me > > > Contains search > > cqlsh:test> SELECT * FROM escape WHERE val LIKE '%%esc%'; > > id | val > ----+----------- > 1 | %escapeme > > (1 rows) > > > Prefix search > > cqlsh:test> SELECT * FROM escape WHERE val LIKE 'escape%%'; > > id | val > ----+----------- > 2 | escape%me > > On Tue, Sep 13, 2016 at 5:06 PM, Mikhail Krupitskiy < > mikhail.krupits...@jetbrains.com> wrote: > >> Hi Cassandra guys, >> >> I use Cassandra 3.7 and wondering how to use ‘%’ as a simple char in a >> search pattern. >> Here is my test script: >> >> DROP keyspace if exists kmv; >> CREATE keyspace if not exists kmv WITH REPLICATION = { 'class' : >> 'SimpleStrategy', 'replication_factor':'1'} ; >> USE kmv; >> CREATE TABLE if not exists kmv (id int, c1 text, c2 text, PRIMARY KEY(id, >> c1)); >> CREATE CUSTOM INDEX ON kmv.kmv ( c2 ) USING ' >> org.apache.cassandra.index.sasi.SASIIndex' WITH OPTIONS = { >> 'analyzed' : 'true', >> 'analyzer_class' : 'org.apache.cassandra.index.sa >> si.analyzer.NonTokenizingAnalyzer', >> 'case_sensitive' : 'false', >> 'mode' : 'CONTAINS' >> }; >> >> INSERT into kmv (id, c1, c2) values (1, 'f22', 'qwe%asd'); >> INSERT into kmv (id, c1, c2) values (2, 'f22', '%asd'); >> INSERT into kmv (id, c1, c2) values (3, 'f22', 'asd%'); >> INSERT into kmv (id, c1, c2) values (4, 'f22', 'asd%1'); >> INSERT into kmv (id, c1, c2) values (5, 'f22', 'qweasd'); >> >> SELECT c2 from kmv.kmv where c2 like ‘_pattern_'; >> >> _pattern_ '%%%' finds all columns that contain %. >> How to find columns that start form ‘%’ or ‘%a’? >> How to find columns that end with ‘%’? >> What about more complex patterns: '%qwe%a%sd%’? How to differentiate ‘%’ >> char form % as a command symbol? (Also there is a related issue >> CASSANDRA-12573). >> >> >> Thanks, >> Mikhail > > > >