Java 当我们有一个巨大的列表时,近似/模糊匹配

Java 当我们有一个巨大的列表时,近似/模糊匹配,java,Java,我在mySql数据库中有一个表,包含用户的完整信息。现在,我想根据用户输入的用户名查找用户的记录。我想让我的匹配智能化,例如,如果用户输入Bilal Ahmed,表中的实际条目是Bilal Ahmad。请注意,只有单个字符的区别。 Soundex将非常耗时,而且从准确性的角度来看也不会太有效,因为我有1700万条记录,每天都在增加数据。。。 请建议我如何处理这个问题?模糊匹配将更具攻击性,因为它可能会匹配其他用户,而且我认为它无法处理如此庞大的数据量…您可以使用以下全文搜索引擎:;如果您担心扩展

我在mySql数据库中有一个表,包含用户的完整信息。现在,我想根据用户输入的用户名查找用户的记录。我想让我的匹配智能化,例如,如果用户输入Bilal Ahmed,表中的实际条目是Bilal Ahmad。请注意,只有单个字符的区别。 Soundex将非常耗时,而且从准确性的角度来看也不会太有效,因为我有1700万条记录,每天都在增加数据。。。
请建议我如何处理这个问题?

模糊匹配将更具攻击性,因为它可能会匹配其他用户,而且我认为它无法处理如此庞大的数据量…您可以使用以下全文搜索引擎:;如果您担心扩展它,您可以进行调查。最后,您可能更喜欢。还有其他解决方案,我们可以通过编程实现,比如fuzzy、soundex或类似的解决方案吗???@Elliott Frisch,我已经实现了Apache Lucene。但它只是在进行精确匹配。我已经在indexer中添加了16个10万文档来索引它。每个文档都包含一个用户名。现在,我有一个包含用户名“bilalahmed54”的文档,我尝试查询“bilalahmad54”,只是单个字符的差异,但它没有与任何用户名匹配,而它应该与包含用户名“bilalahmed54”的文档匹配。这是怎么回事?我走在正确的轨道上?