gpt4 book ai didi

java - Cassandra 中的特殊字符搜索

转载 作者:行者123 更新时间:2023-12-02 11:32:53 27 4
gpt4 key购买 nike

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

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

但是当我像下面这样搜索时,

从“user_name”类似于“%u%”的用户中选择 * -> 这有效

从用户中选择 *,其中“user_name”类似于“%,%” -> 这是不起作用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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com