Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中为部分字符串匹配设计的好数据库平台是什么?_Java_Database_Search_Text_Partial - Fatal编程技术网

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

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中

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

我有一个用java编写的SQLite数据库,其中存储了很多歌曲标题/艺术家姓名。目前我正在查询数据库,如下所示:

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访问,因此在选择解决方案时不必考虑这一点