Java结合MySQL实现逗号分隔字符串列的反向高效搜索方案
反向搜索的高效实现方案求助(Java 17 + MySQL 8)
待搜索对象
Data_to_search
{ "data": { "id": 123456, "first_name": "rajesh", "last_name": "kumar", "birth_year": "2020" } }
数据库表结构及数据
| id | SearchTerms(String Type in Database) |
|---|---|
| 1 | Ranjan Palekar,2021 |
| 2 | Naresh Thalwar,2020 |
| 3 | Rajesh,2020 |
| 4 | kumar |
| 5 | 2020 |
| 6 | aprajith kumar, 2020 |
预期查询结果
| id | SearchTerms |
|---|---|
| 3 | Rajesh,2020 |
| 4 | kumar |
| 5 | 2020 |
| 6 | aprajith kumar, 2020 |
匹配规则说明
数据库中前2条记录未出现在结果中:第一条无匹配项,第二条虽匹配2020,但第一个字符串Naresh Thalwar未匹配。
已尝试的低效方案
- 使用类似
(?=.*word1)(?=.*word2)(?=.*word3)的正则表达式,但无法得到记录4、5、6; - 拆分数据库列后循环匹配,效率极低。
求助需求
当前使用Java 17和MySQL 8版本,恳请提供高效的实现思路。
内容的提问来源于stack exchange,提问作者Mahesh Budeti
相关产品推荐
相关产品推荐

