部分搜索字符串

时间:2017-11-01 17:34:13

标签: java

我需要根据存储在数据库表中的longNames列表和相应的shortNames将longName转换为shortName。桌上有一个约。 500个条目,预计不会增长。

示例:我收到longName值设置为Royal Bank of Scotland Euro的请求,因此shortName值输出类似于:RBOS €基于其值DB。

我可以将LongNames和shortNames的DB条目加载到Map中,并在longName值上键入Map并检查每个值 在请求中的字符串中存在作为Map中的键,但这似乎是搜索相应的低效方式 shortName。在上面的例子中,我需要在找到RBOS的匹配之前阅读Map 4次,因为我不知道String中有多少值会构成每个Key来读取Map。

我想知道是否有更有效的方法解决这个问题?

1 个答案:

答案 0 :(得分:0)

制作一个存储过程(没人真正喜欢)。

解析"苏格兰皇家银行欧元"如:

从最长的序列开始

  1. "苏格兰皇家银行欧元"失败
  2. "苏格兰皇家银行"成功 - " RBOS"
    1. 以"欧元"成功 - "€"
    2. 商店"苏格兰皇家银行欧元" - > " RBOS€"也许有一个额外的布尔列值DERIVED
  3. 变体案例:

    1. "苏格兰皇家银行欧元"失败
    2. "苏格兰皇家银行"假设它失败
    3. "皇家银行"假设它成功" RBO
      1. 兑换苏格兰欧元" - > " S Euro" (假设欧元失败)
      2. 商店"苏格兰皇家银行欧元" - > " RBO S Euro"可能有一个额外的布尔列值DERIVED 1
    4. 最终,每次访问都会产生结果。

      我已经看到了足够的情况,其中实现选择转到了java解析解决方案,可能还有一些缓存。我也没有找到这么糟糕的解决方案。