与具有替代拼写的表进行名称匹配
我有一个表格,其中包含国家/地区名称的替代拼写:
使用名称、Alt1、Alt2、Alt3、Alt4
[...]
巴哈马,“巴哈马”
玻利维亚
波斯尼亚和黑塞哥维那, 波斯尼亚和黑塞哥维那黑塞哥维那
[...]
(某些国家/地区有 0 个替代拼写,其他国家最多有 4 个。)
给定一个国家/地区字符串,从性能角度来看,返回第一列中的元素的最佳解决方案是什么? (在大多数情况下,与替代拼写的数量无关,字符串与第一列匹配,并且不必进行名称匹配。在其他情况下,概率均匀分布在第 2-X 列中。
(最好在JavaScript 或 PHP,谢谢:))
I have a table with alternative spellings of country names:
Use name, Alt1, Alt2, Alt3, Alt4
[...]
Bahamas, "Bahamas, The"
Bolivia
Bosnia and Herzegovina, Bosnia & Herzegovina
[...]
(Some countries have 0 alternative spellings, other up to 4.)
Given a country string, what is performance-wise the best solution to returning the element in the first column? (In most of the cases, independent of the number of alternative spellings, the string matches the first column and doesn't have to be name-matched. In the other cases the probability is evenly distributed across column 2-X.
(Preferably in JavaScript or PHP, thanks :) )
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在我看来,我认为您应该将其放入数据库中的两个单独的表中:
在名称列上放置索引,以便您可以快速搜索正确的名称和国家ID:(
或者,您可以添加
LEFT JOIN< /code> 如果您需要主表中的更多信息)
其他选项是仅为备用名称创建一个表:
但是在查找第一个匹配项时,您必须在两个表中搜索。
编辑:静态JavaScript解决方案:
In my opinion, I think you should put this in two separate tables in database:
Put an index on the name column so that you can search fast for the correct name and country_id:
(optionally, you can add a
LEFT JOIN
if you need more info from the main table)Other option would be to create a table only for alternative names:
But you'd have to search in two tables when looking for a first match.
EDIT: Static JavaScript solution: