我有一个如下所示的“ user”表,

 user_id | user_name | user_phone
---------+-----------+-------------
      23 |     user, | 12345678910
       5 |     user^ | 12345678910
      10 |     user- | 12345678910
      16 |     user{ | 12345678910
      13 |     user= | 12345678910
      11 |     user_ | 12345678910
       1 |     user@ | 12345678910
      19 |     user" | 12345678910
       8 |     user( | 12345678910
       0 |     user! | 12345678910
       2 |     user# | 12345678910
       4 |     user% | 12345678910
      18 |     user[ | 12345678910
      15 |     user} | 12345678910
      22 |     user< | 12345678910
      27 |     user/ | 12345678910
      20 |     user: | 12345678910
       7 |     user* | 12345678910
       6 |     user& | 12345678910
       9 |     user) | 12345678910
      14 |     user| | 12345678910
      26 |     user? | 12345678910
      21 |     user; | 12345678910
      17 |     user] | 12345678910
      24 |     user> | 12345678910
      25 |     user. | 12345678910
      12 |     user+ | 12345678910
       3 |     user$ | 12345678910


我在“ user_name”字段上建立了索引,

CREATE CUSTOM INDEX user_name_idx ON user ("user_name") USING 'org.apache.cassandra.index.sasi.SASIIndex' WITH OPTIONS = {'mode': 'CONTAINS', 'analyzer_class': 'org.apache.cassandra.index.sasi.analyzer.StandardAnalyzer', 'case_sensitive': 'false'};


但是当我如下搜索时,

select * from user where "user_name" LIKE '%u%'->这有效

select * from user where "user_name" LIKE '%,%'->这不起作用
Cassandra中没有任何特殊字符。
我在这里做错了什么?如何在Cassandra中支持特殊字符搜索?

与索引有关系吗?

最佳答案

您正在使用StandardAnalyzer,它删除特殊字符

如果要保留特殊字符,请使用NonTokenizingAnalyzer

范例:

CREATE CUSTOM INDEX user_name_idx
   ON user ("user_name") USING 'org.apache.cassandra.index.sasi.SASIIndex'
   WITH OPTIONS = {'mode': 'CONTAINS', 'analyzer_class': 'org.apache.cassandra.index.sasi.analyzer.NonTokenizingAnalyzer', 'case_sensitive': 'false'};


样本输出:

cqlsh:test> SELECT * FROM user WHERE user_name LIKE '%,%';

 user_id | user_name | user_phone
---------+-----------+------------
      23 |     user, | 12345678910

关于java - Cassandra中的特殊字符搜索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49165530/

10-12 05:04