Java中为部分字符串匹配设计的好数据库平台是什么?
如果这个问题看起来有点笼统,我很抱歉,但我一直在谷歌上搜索都没有用,我不知道还能去哪里 我有一个用java编写的SQLite数据库,其中存储了很多歌曲标题/艺术家姓名。目前我正在查询数据库,如下所示:Java中为部分字符串匹配设计的好数据库平台是什么?,java,database,search,text,partial,Java,Database,Search,Text,Partial,如果这个问题看起来有点笼统,我很抱歉,但我一直在谷歌上搜索都没有用,我不知道还能去哪里 我有一个用java编写的SQLite数据库,其中存储了很多歌曲标题/艺术家姓名。目前我正在查询数据库,如下所示: SELECT * FROM music WHERE (title LIKE "%adio%" OR artist LIKE "%adio%") ORDER BY title, ASC LIMIT 20 显然,这个方法相当慢,因为我在搜索词的每一边都使用了一个通配符 问题是,如果我在iTunes中
SELECT * FROM music WHERE (title LIKE "%adio%" OR artist LIKE "%adio%") ORDER BY title, ASC LIMIT 20
显然,这个方法相当慢,因为我在搜索词的每一边都使用了一个通配符
问题是,如果我在iTunes中搜索“放射性”,我可以搜索“adio”,放射性弹出相当快。什么样的数据库能够如此快速地完成此搜索?我已经研究过SQLite中的FTS,但它不允许使用前缀通配符。我觉得SQLite不是这里的正确选择,所以我正在寻找建议。谢谢你的时间 许多关系数据库都支持一种称为“全文搜索”(FTS)的功能,这正是您需要的。
FTS是一种特殊的索引,可以快速搜索单词。FTS查询的语法取决于数据库(它不像SQL那样是标准的)。FTS索引可以是特定于语言的,除了精确的单词和前缀/后缀搜索外,还允许搜索类似的单词、同义词、复数/单数。
如果您正在寻找非商业选项,Postgres支持FTS 但这实际上取决于您的应用程序。使用非关系数据库可能会更好。看看Lucene的独立全文搜索索引,或者看看构建在Lucene之上的Elastic 大多数数据库和普通数据库都可以使用Java访问,因此在选择解决方案时不必考虑这一点