gpt4 book ai didi

sqlite - SQLite常规表和fts表

转载 作者:行者123 更新时间:2023-12-03 18:36:53 24 4
gpt4 key购买 nike

我有表news(id,news_id,news_title),并创建了FTS表:

CREATE VIRTUAL TABLE news_search USING fts4 (news_title, tokenize=porter);


我使用触发器使表NEWS和news_search保持同步:

CREATE TRIGGER IF NOT EXISTS insert_news_trigger 
AFTER INSERT ON news
BEGIN
INSERT OR IGNORE INTO news_search (news_title) VALUES (NEW.news_title);
END;


问题:如何使用搜索?当我在news_search表中进行匹配时,它仅返回该表中的记录,但我需要新闻表中的* news_id *。可能我应该将* news_id *列添加到news_search表中?

在sqlite中使用fts的正确方法是什么?

最佳答案

阅读documentation; FTS表还具有一个rowid列(也称为docid),您可以将其显式设置为与原始表的对应键相同的值。

假设news.idrowid(即INTEGER PRIMARY KEY),则应更改触发器,以将该ID值也复制到news_search表中。
您可以使用它来查找原始记录:

SELECT *
FROM news
WHERE id IN (SELECT docid
FROM news_search
WHERE news_title MATCH '😸')

关于sqlite - SQLite常规表和fts表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19634458/

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