可扩展的搜索算法SQL

时间:2016-12-25 23:53:44

标签: java sql postgresql search

所以我有一个存储在postgres数据库中的用户列表,我想在我的(Java)后端用用户名搜索它们,并在前端向用户显示一个截断的列表(如facebook用户搜索)。当然,在SQL中,可以使用

WHERE username = 'john smith';

但我希望搜索算法更复杂一些。从接近未命中开始,例如

"Michael" ~ "Micheal"

可能会改善它以使用上下文,例如地理邻近度。

这已经做了很多次,我觉得我会重新发明方向并做坏事。是否有图书馆这样做?应该在后端(在Java中)还是在DB(Postgresql)中处理。如何使这个模型可扩展(即使用一个易于添加复杂性的模型)?

1 个答案:

答案 0 :(得分:1)

复杂的算法不会神奇地出现,你必须实现它。您的最后一个问题是您是应该在Java还是在数据库中执行此操作。在绝大多数情况下,最好使用数据库进行查询。诸如"Michael" ~ "Micheal"或空间查询之类的东西是许多现代SQL数据库中的标准功能。您只需实现适当的SQL查询。

然而,另一点是,如果SQL数据库是"复杂查询"的正确工具。您也可以考虑像Elasticsearch这样的替代品。