java - 可扩展的搜索算法 SQL

标签 java sql postgresql search

所以我有一个存储在 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/

相关文章:

performance - select * from foo (100 000 rows) 需要 4 秒,这正常吗?

java - Swing 步进式光标移动

java - 如何将我的枚举类返回设置为 ArrayList Java

mysql - 语法错误或访问冲突

mysql - SQL 计算具有多个Where 可能性的表中的不同值

php - 要在 latin1_swedish_ci 表 MYSQl 上插入的数据 UTF-8

java - 将 json 源转换为 java 对象

java - 使用maven在多模块项目中运行特定模块的测试用例

sql - 正则表达式约束拒绝 Postgresql 中明显有效的数据

sql - 计算出现次数