gpt4 book ai didi

mysql - 如何查询数据库中不相似但几乎匹配的项目

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:22:31 24 4
gpt4 key购买 nike

如何在数据库中查询不仅与样本完全相似而且几乎相似的项目?几乎作为搜索引擎工作,但只适用于一个小项目,最好是在 Java 中。例如:

String sample = "Sample";

每当我查询 sample 时,我想检索以下所有内容:

String exactMatch = "Sample";
String nonExactMatch = "S amp le";
String nonExactMatch_2 = "ampls";

最佳答案

您需要用您的数据库可以理解的术语来定义similar 的含义。

一些可能性包括 Levenshtein 距离,例如。

在您的示例中,示例 匹配...

...“示例”,如果您在不区分大小写的情况下进行搜索。

..."S amp le",如果您从查询字符串和目标字符串中删除了一组被忽略的字符(这里只有空格)。您可以将新值存储在数据库中:

   ActualValue      SearchFor
John Q. Smith johnqsmith%

当有人搜索“John Q. Smith, Esq”时。你可以把它归结为 johnqsmithesq 并运行

   WHERE 'johnqsmithesq' LIKE SearchFor

“ampls”更棘手。为什么“ampls”与“sample”相匹配?一个共同的子串?一些共享的字母?他们的订单是否有效(即字谜是否有效)?可以采用多种方法,但必须由您来决定。您可以使用 Levenshtein 距离,或者存储一个字符串,例如“100020010003...”,其中每个数字编码您拥有的字母数,最多 9 个(因此 3 个 C 和 2 个 B,但没有 A 会给出“023 ... ") 然后运行此综合症与数据库中每个术语的综合症之间的 Levenshtein 距离:

 ActualValue    Search1     Rhymes  abcdefghij_Contains  anagramOf
John Q. Smith johnqsmith% ith 0000000211011... hhijmnoqst

...等等。

一种方法是问自己,我必须如何转换搜索值和搜索值,以便它们匹配?,然后继续并在代码中实现它。

关于mysql - 如何查询数据库中不相似但几乎匹配的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31581357/

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