gpt4 book ai didi

sqlite - SQLite全文本搜索:查找包含任何关键字的行

转载 作者:行者123 更新时间:2023-12-03 17:55:26 31 4
gpt4 key购买 nike

我有以下表格:

-- table to keep articles titles
CREATE TABLE articles(id, title);
insert into articles (id,title) values (1,'sqlite example');
insert into articles (id,title) values (2,'sqlite query ');
insert into articles (id,title) values (3,'erlang example ');
insert into articles (id,title) values (3,'erlang otp ');

-- table to keep keywords that we would like to search.
create table keywords(id,keyword);
insert into keywords (id,keyword) values (1,'sqlite');
insert into keywords (id,keyword) values (2,'otp');


-- full text search table - copy of articles.

create virtual table articles_fts using fts4 (id,name);

-- populate table with articles titles.
insert into articles_fts(id,name) select id,title from articles;


现在,我想查找所有包含任何指定关键字的文章。

查询如下:

select * from articles_fts 
where name match (select keyword from keywords);


仅返回其中包含sqlite的标题(第一个关键字),因此将忽略关键字表的其他条目。

题:
如何找到所有包含任何指定关键字的文章?
谢谢。

最佳答案



select *
from articles_fts
WHERE articles_fts MATCH ( select group_concat(keyword, ' OR ')
from keywords
group by 'x' )


group_concat函数用逗号将所有关键字聚合在一起。如果用OR替换逗号,它将产生一个良好的FTS查询。

另请参阅 the full text search feature reference的第3节有关OR关键字和 reference for aggregate functions的信息。

关于sqlite - SQLite全文本搜索:查找包含任何关键字的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5934099/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com