Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 如何查询外部内容FTS4表,但返回原始内容表中的其他列大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在sqlite中创建一个 FTS4 external content table,如下所示:

create table t2(id @R_262_2428@ARY KEY,@R_197_9582@,col_b,col_text);
CREATE VIRTUAL TABLE fts_table USING fts4(content="t2",col_text);

我正在使用外部内容表,因此我不需要在fts_table中存储col_text的重复值.我只索引col_text,因为@R_197_9582@和col_b不需要编入索引.

但是,当我像这样查询fts_table时

SELECT * FROM fts_table WHERE fts_table MATCH 'something';

我无法访问内容表t2中的@R_197_9582@和col_b.如何从单个FTS查询返回所有这些列(@R_197_9582@,col_text)?

更新

我尝试使用notindexed = column_name选项

CREATE VIRTUAL TABLE fts_table USING fts4(content="t2",col_text,notindexed=@R_197_9582@,notindexed=col_b);

这应该适用于某些人,但是我在Android中使用它并且直到sqlite 3.8才支持notindexed选项,Android直到Android version 5.x支持它.我需要支持android 4.x.我正在更新此问题以包含Android代码.

解决方法

FTS表有一个名为docid或rowid的内部@R_262_2428@ARY KEY列.
在FTS表中插入行时,将该列设置为原始表中行的主键.

然后,您可以使用单独的查询或使用如下连接轻松查找相应的行:

SELECT *
FROM t2
WHERE id IN (SELECT docid
             FROM fts_table
             WHERE col_text MATCH 'something')

大佬总结

以上是大佬教程为你收集整理的android – 如何查询外部内容FTS4表,但返回原始内容表中的其他列全部内容,希望文章能够帮你解决android – 如何查询外部内容FTS4表,但返回原始内容表中的其他列所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。