【发布时间】:2017-11-28 10:16:48
【问题描述】:
我使用 Java、Spring、Ibatis、Oracle 数据库。
在该数据库中,我们有 1 个表是 Street,有 1000 万条记录,重要的列是 street_name。
从 GUI 中,我必须按街道搜索公司,例如:街道名称输入是 Schonburgstrasse,但 DB 中的正确数据是:Schönburgstrasse (德语)
您可以看到,主要的区别是: o 和 ö 。而且我肯定无法通过 SQL 找到这条记录:
Select * from Street where street_name = 'Schonburgstrasse';
规则是:
我无法再更改数据库架构。
我无法将 10M 条记录一一归一化。之后比较数据
(归一化意味着,我将具有转换 From : Schönburgstrasse, To : Schonburgstrasse)的功能
- 我必须注意性能问题。
感谢您的宝贵时间。
【问题讨论】:
-
请澄清几件事 - 您有多少街道记录(1000 万!= 100 亿),为什么您的用户不能输入正确的街道名称?如果用户输入“Schoenburgstrasse”(使用“oe”代替“ö”——用 ASCII 写元音变音符号的常用方法)会发生什么?
-
100 亿?超过地球上的人类?这是真的吗,因为如果您实际上有 1000 条记录而不是 10 亿条记录,那么不可接受的解决方案可能会变得可以接受。
-
@BIZ 是的,我理解你想要做什么,但这很荒谬,你不应该尝试这个。 hog 和 hög 不一样,如果拼写为 hôg 也不正确。
-
您可以在 oracle 中使用 translate() ,但这会使您的索引不起作用。如果我在 Oracle 数据库中有 100 亿只用于搜索简单文本,我会使用另一种 o 数据库。例如:Elasticseach、Solr。
标签: java spring oracle performance ibatis