在我的MySQL数据库中,我有一个用户表。在用户名字段上输入错字时,我需要执行搜索。关于这个话题很少有很老的问题。我测试了内置的mysql全文搜索,但是没有按预期工作(它不能处理错字)[我知道,但是我还是尝试了]。
我最好的选择是什么?我认为当今应该有一个简单的解决方案。我正在考虑在elasticsearch上复制用户表,然后从那里进行即时搜索,但是我真的很想避免由此引起的同步梦night。
谢谢!!
最佳答案
您可以将SOUNDEX用于mysql。我们已经尝试过了,但是我可以说它不能很好地工作,这也使搜索有些慢。
我们遇到了类似的问题,并改用ES。
我们所做的如下:
触发器将写入新表。这样一个表的列
是:
该操作将被创建,更新,删除。 IsSynced会告诉
是否将更新推送到ES。
使用RabbitMQ的原因是它将确保将更新转发到ES。万一发生故障,我们总是可以重新排队对象。
除此之外,您还必须创建一个实用程序,该实用程序将从数据库中创建ES索引以供首次使用。
您还可以查看ES的Fuzzy Search,它将处理拼写错误
Completion suggester也支持模糊搜索。