0

我们正在升级我们的系统以获得 IDNA 支持,但我目前正在努力进行域搜索。在我们的域名组合中,您可以搜索域名。IDNA 域在我们的数据库中保存为它们的 A 标签(café-modern.com另存为xn--caf-modern-d7a.com),我们只是在浏览器中显示它时将其转换为 U 标签。

问题是这完全破坏了我们的搜索。
当有人搜索时,café-modern.com我可以轻松地将其转换为 IDNA 值并在WHERE domain_name LIKE ?DB 查询的一部分中使用它,但是当有人仅搜索café( xn--caf-dma) 时,它也应该找到café-modern.com

一个解决方案是将 A-label 和 U-label 值都保存在数据库中,但这是我想保留的最后手段,因为数据集非常大,我想让数据库模式尽可能简单.

4

1 回答 1

0

这太正常了。我一直在使用类似的系统。我认为您的设计不正确。不应另存为 (xn--caf-modern-d7a.com),您可以在 DB 上另存为 (café-modern.com)。在 DB 上录制时,您必须将 IDNA 值转换为 UTF8 值(或另一个值)。因此,您可以搜索 café-modern.comcaféWHERE domain_name LIKE ?

于 2013-10-03T07:35:52.903 回答