在Android中,使用的是sqlite,而如果需要在其中做全文检索的话,也是可以的。因为sqlite中支持fts表(full-text search的简称),详细的可以参考:
http://www.sqlite.org/fts3.html#section_1 ,这里介绍了FTS3和FTS4的区别,
这里的FTS3其实是sqlite的一个扩展模块,是虚拟表模块,允许用户去实现全文检索。下面是一个简单的例子:
可以看到,使用上面的语法即创建了一个fts3的表了,而检索时,根据手册上说的:
SELECT count(*) FROM enrondata1 WHERE content MATCH 'linux'; /* 0.03 seconds */
SELECT count(*) FROM enrondata2 WHERE content LIKE '%linux%'; /* 22.5 seconds */
看到没?这里是使用match了,而不是传统的like,而且效率很高了。
还支持如下的语法:
SELECT * FROM words_fts WHERE words_fts MATCH 'description: company';
即列名:该列要搜索的关键词
还可以这样:
SELECT * FROM words_fts WHERE words_fts MATCH 'description: comp*'
即支持通配符了
http://www.sqlite.org/fts3.html#section_1 ,这里介绍了FTS3和FTS4的区别,
这里的FTS3其实是sqlite的一个扩展模块,是虚拟表模块,允许用户去实现全文检索。下面是一个简单的例子:
CREATE VIRTUAL TABLE enrondata1 USING fts3(content TEXT);
可以看到,使用上面的语法即创建了一个fts3的表了,而检索时,根据手册上说的:
SELECT count(*) FROM enrondata1 WHERE content MATCH 'linux'; /* 0.03 seconds */
SELECT count(*) FROM enrondata2 WHERE content LIKE '%linux%'; /* 22.5 seconds */
看到没?这里是使用match了,而不是传统的like,而且效率很高了。
还支持如下的语法:
SELECT * FROM words_fts WHERE words_fts MATCH 'description: company';
即列名:该列要搜索的关键词
还可以这样:
SELECT * FROM words_fts WHERE words_fts MATCH 'description: comp*'
即支持通配符了
本文详细介绍了如何在Android应用中使用SQLite的fts3表模块进行全文检索,对比了传统like与match语法的性能差异,并展示了fts3表模块支持的高级搜索功能,包括通配符和虚拟表的使用。
254

被折叠的 条评论
为什么被折叠?



