所以我有一个存储在 postgres 数据库中的用户列表,我想在我的(Java)后端通过用户名搜索它们,并在前端向用户呈现一个截断的列表(如 facebook 用户搜索)。当然,在 SQL 中,可以使用
WHERE username = 'john smith';
但我希望搜索算法更加复杂一些。例如,从未遂事件开始
"Michael" ~ "Micheal"
并可能对其进行改进以使用上下文,例如地理邻近性。
这种事已经做过很多次了,我觉得我会重新发明轮子,而且做得很糟糕。有这样做的图书馆吗?这应该在后端(Java 中)或数据库(Postgresql)中处理。如何使这个模型具有可扩展性(即使用一个可以轻松增加复杂性的模型)?
最佳答案
复杂的算法不会神奇地出现,你必须实现它。您的最后一个问题是您应该使用 Java 还是数据库来执行此操作。在绝大多数情况下,最好使用数据库进行查询。像 "Michael"~ "Micheal"
或空间查询这样的东西是许多现代 SQL 数据库的标准功能。您只需实现适当的 SQL 查询即可。
然而,另一点是,SQL 数据库是否是“复杂查询”的正确工具。您还可以考虑 Elasticsearch 等替代方案。
关于java - 可扩展的搜索算法 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41325351/