假设我有一个包含许多名称的数据库表。我想对这些名字进行“灵活匹配”。我不确定“灵活匹配”是否是合适的术语,但我们现在就使用它吧。已有similar discussions关于“模糊匹配”,但我对语音匹配并不感兴趣。我对所谓的有序子集匹配很感兴趣。
我希望它的工作方式类似于 QuickSilver (OSX) 或 Launchy (Windows)。以下是给定搜索字符串的一些匹配示例:
mit ⇒ Massachusetts IT技术研究所
fox ⇒ Firefox
osx ⇒ Mac OS X
ms ⇒ MicroSoft Corporation
我的最终目标是拥有一个网页,其中包含由服务器驱动的数据自动完成的文本字段。
我相信通过结合 jQuery LiveUpdate 中的功能,我会在客户端获得足够的结果和/或 jQuery QuickSelect .
我需要帮助的地方在于如何最好地处理服务器端针对大表的弹性匹配。我对如何使用 Quicksilver 构建自己的自定义索引有一些想法 scoring algorithm也许还有一些排列索引逻辑,但如果有其他现成的东西,我宁愿不重新发明轮子。
总结: 针对多行数据库表进行快速灵活匹配的最佳方法是什么?
这并没有直接回答我的问题,但对于我正在从事的项目,我意识到我还需要服务器端组件还。为了方便我的 Web 应用程序的客户端,我刚刚启动了两个新的开源项目:
- LiquidMetal :这是一种类似于 Quicksilver 的评分算法,可以根据缩写对字符串进行评分。在建立索引时很有用。
- Flexselect :一个 jQuery 插件,可以将选择框变成灵活匹配的增量查找控件。把它想象成 Quicksilver 挤进了一个选择框。它使用 LiquidMetal 对实时结果进行过滤和排序。
Tôi là một lập trình viên xuất sắc, rất giỏi!