大佬教程收集整理的这篇文章主要介绍了SQLite FTS4使用首选语言,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
WITH term_search1 AS ( SELECT * FROM myFts WHERE myFts MATCH 'term' AND languagEID = 1) SELECT * FROM term_search1 UNION SELECT * FROM myFts WHERE myFts MATCH 'term' AND languagEID = 2 AND id NOT IN @R_673_9579@CT id FROM term_search1)
这里的问题是,term_seach1查询将被执行两次.有没有办法实现我的结果呢?将其限制为2个查询(而不是3个)的任何解决方案都会很棒.
我也尝试过使用递归查询,例如:
WITH REcursIVE term_search1 AS ( SELECT * FROM myFts WHERE myFts MATCH 'term' AND languagEID = 1 union all SELECT m.* FROM myFts m LEFT OUTER JOIN term_search1 t ON (m.id = t.id) WHERE myFts MATCH 'term' AND m.languagEID = 2 AND t.id IS NULL ) SELECT * FROM term_search1
这既不起作用.显然他刚刚为languagEID = 2执行了两次查找(这可能是一个错误吗?).
提前致谢 :)
CREATE temp table results (id INTEGER PRIMARY KEY); INSERT INTO results SELECT id FROM myFts WHERE myFts MATCH 'term' AND languagEID = 1; INSERT INTO results SELECT id FROM myFts WHERE myFts MATCH 'term' AND languagEID = 2 AND id NOT IN @R_673_9579@CT id FROM results); SELECT * FROM myFts WHERE id IN @R_673_9579@CT id FROM results); drop table results;
如果可以更改架构,则只应将文本数据保留在FTS表中.这样,当您搜索数字时,您将避免不正确的结果,并且不希望匹配languagEID的行.创建另一个包含非文本数据(如ID和languagEID)的元表,并通过连接myFts的rowid来过滤行.这样,您只需要查询FTS表一次 – 使用临时表来存储FTS表结果,然后使用元表对它们进行排序.
以上是大佬教程为你收集整理的SQLite FTS4使用首选语言全部内容,希望文章能够帮你解决SQLite FTS4使用首选语言所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。