gpt4 book ai didi

sql - 数据库中的名字变化

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:28:08 25 4
gpt4 key购买 nike

我正在尝试确定在数据库中查找名字变体的最佳方法。例如,我搜索 Bill Smith。显然,我希望它返回“Bill Smith”,但我也希望它返回“William Smith”或“Billy Smith”,甚至“Willy Smith”。我最初的想法是建立一个名字层次结构,但我不知道从哪里可以获得这样的数据,如果它存在的话。

既然用户可以搜索目录,我认为这将是一个关键功能。例如,和我一起上学的人叫我乔,但我现在总是叫约瑟夫。因此,我正在考虑使用 NYSIIS 或 Double Metaphone 对姓氏进行语音搜索,然后使用此姓名层次结构对名字进行搜索。有没有更好的方法来做到这一点 - 也许某种分级相关性使用全名全文搜索而不是名字和姓氏的两部分搜索?我的一部分认为,如果我将名称存储为单个值而不是多个值,它可能会提供更多搜索选项,但代价是无法通过名字来称呼用户。

就平台而言,我使用的是 SQL Server 2005 - 但是,将一些匹配项转移到代码中没有问题;例如,为用户预置语音键,因为它们不会改变。

任何想法或指导将不胜感激。无数的搜索几乎都是空的。谢谢!

编辑:似乎在功能上存在两个截然不同的阵营,而我现在肯定处于中间位置。我可以看到全文搜索的论据 - 很可能是在缺乏数据规范化以及对名称的不同部分使用不同标准的多部分方法的情况下完成的。

问题最终归结为用户意图。 Bill/William 的例子是一个很好的例子,因为它显示了名字的变化是基于正式的用法。我认为构建名称层次结构是更准确(和可扩展)的解决方案,但会复杂得多。模糊搜索方法以牺牲准确性为代价更容易实现。这是一个公平的比较吗?

解决方案:经过一些测试,我决定采用一种方法,即初始注册将使用全名,然后将其拆分为多个字段(名字、姓氏、中间名、后缀等。 ).因为我确信它不会完美,所以我将允许用户编辑“部分”,包括添加娘家姓或别名。就搜索而言,无论使用哪种解决方案,我都需要维护数据库表中或同义词库中存在的变化。在这种情况下,两者都没有优势。我认为这将归结为性能,我将不得不实际运行一些基准测试来确定哪个是最好的。谢谢大家的意见!

最佳答案

在我看来,你应该正确做一个功能并使其完整,或者你应该放弃它以避免在计算机程序中构建半评估的智能大多数时候仍然会出错("Looks like you're writing a letter",有人吗?)。

如果是人名,计算机在大多数情况下都会出错,恕我直言,不可能做到正确和完整。也许你可以破解一些最常见的英文名字。但实际上,几乎所有说英语的人都具备寻找“Bill”和“William”的智慧 - 我会留给他们将这些点联系起来。

关于sql - 数据库中的名字变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/575076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com