【发布时间】:2013-11-28 22:42:15
【问题描述】:
给定一个包含按字母顺序索引的字符串的 SQL 数据库表,我如何执行按子字符串匹配排序的搜索查询?
例如,给定数据集:
bad
banana
bandana
banker
bed
brother
而搜索字符串band,我希望结果排序如下
bandana (index 0-3 matched)
banana (index 0-2 matched)
banker
bad (index 0-1 matched)
bed (index 0 matched)
brother
请注意,我们只关心匹配的子字符串的长度。落入每个桶的匹配不必按字母顺序排序,我只关心它们落入的桶。
所以我天真地猜测问题涉及:
- 查看与我的每行输入匹配的子字符串长度
- 根据匹配长度将每一行放入适当的桶中
- 按降序排列存储桶,即(匹配 4 个字符,匹配 3 个字符,2..)
但这听起来很昂贵,那么我怎样才能在 SQL 或 C# 中实现它并高效地完成呢?
我可以从这里受益的类似问题/模式吗?
非常感谢
【问题讨论】:
-
你能分享一下你使用什么算法来执行实际的字符串匹配吗?
-
我愿意接受建议,因为现阶段我仍在脑海中制定代码。它必须是具有理想复杂性的东西,其中运行时间优先于使用的内存
标签: c# sql bucket-sort