【发布时间】:2021-05-17 01:45:56
【问题描述】:
假设我们有两张表,一张名为tags,另一张名为texts,如下所示:
tags表:
| id | name |
|---|---|
| 1 | T1 |
| 2 | T2 |
| 3 | T3 |
| 4 | T4 |
Texts表:
| id | text |
|---|---|
| 1 | Text includes T2 |
| 2 | Text includes T4 |
| 3 | Text |
| 4 | Text includes T2 |
我想搜索每个Text 并将Tags 表中的标签附加到每个文本。输出将是这样的:
| tagId | textId |
|---|---|
| 2 | 1 |
| 2 | 4 |
| 4 | 3 |
I 就像一个循环遍历每个文本,然后循环遍历每个标签,并使用Like 语句检查该文本是否包含该标签。然而这并不实用。另一种方法是使用FTS,但我不太确定如何编写它的查询,因为例如这个查询只给我带有这些标签的文本
select *
from texts_fts
WHERE texts_fts MATCH ( select group_concat(tag, ' OR ')
from keywords
group by 'x' )
还有其他方法可以让它发挥作用吗? 谢谢
【问题讨论】:
-
这是一个非常简单的要求,显而易见的解决方案是连接和运算符 LIKE。为什么你认为它不实用?
-
@forpas 如果我有一张
tags的长桌,请问我该怎么做?我认为LIKE不适用于连接。是吗? -
当然可以。看我的回答。
标签: sqlite full-text-search sql-like