有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中为部分字符串匹配设计的好数据库平台是什么?

如果这个问题看起来有点笼统,我很抱歉,但我一直在谷歌上搜索,没有用,我不知道还能去哪里

我有一个用java编写的SQLite数据库,它存储了很多歌曲标题/艺术家的名字。目前我正在像这样查询数据库:

SELECT * FROM music WHERE (title LIKE "%adio%" OR artist LIKE "%adio%") ORDER BY title, ASC LIMIT 20

显然,这个方法相当慢,因为我在搜索词的每一边都使用了一个通配符

问题是,如果我在iTunes中搜索“放射性”,我可以搜索“adio”,放射性弹出相当快。什么样的数据库能如此快速地完成搜索?我已经研究过SQLite中的FTS,但它不允许使用带前缀的通配符。我觉得SQLite不是这里的正确选择,所以我正在寻找建议。谢谢你抽出时间


共 (1) 个答案

  1. # 1 楼答案

    许多关系数据库都支持一种称为“全文搜索”(FTS)的功能,这正是您需要的
    FTS是一种特殊的索引,可以快速搜索单词。FTS查询的语法取决于数据库(它不像SQL那样是标准的)。FTS索引可以是特定于语言的,除了精确的单词和前缀/后缀搜索外,还允许搜索类似的单词、同义词、复数/单数
    如果你正在寻找非商业选项,Postgres支持FTS

    但这取决于你的应用。使用非关系数据库可能会更好。看看Lucene的独立全文搜索索引,或者看看构建在Lucene之上的Elastic

    大多数数据库,当然还有常见的数据库,都可以使用Java访问,所以在选择解决方案时不必担心这一点