gpt4 book ai didi

sql - SQLite 3.7.4 中字段子集的全文搜索

转载 作者:行者123 更新时间:2023-12-03 17:21:27 25 4
gpt4 key购买 nike

上下文

我有一个表指定为

CREATE VIRTUAL TABLE EmailAttachmentSearch USING 
fts4(entityId Varchar(255), name, subject, type, group, from, json);

要求

我需要允许用户搜索 namesubjecttypegroup来自

条件

我知道 notindexed 选项,但由于多平台兼容性,我们仅限于不支持 notindexed 的 SQLite 3.7.4。

问题

我正在尝试构造一个等效于 MATCH 'word1* word2*' 但将排除 entityIdjson 的查询字段。

我的尝试总是导致没有数据或数据过多。

无效示例

SELECT json
FROM EmailAttachmentSearch
WHERE EmailAttachmentSearch MATCH
'(name:word1*
OR type:word1*
OR subject:word1*
OR from:word1*)
AND (name:word2*
OR type:word2*
OR subject:word2*
OR from:word2*)'

最佳答案

看起来 SQLite 查询引擎不支持 MATCH 部分中的这种复杂条件。我做了更多研究,发现当您使用子查询时它工作得很好。

 SELECT json FROM EmailAttachmentSearch WHERE ROWID IN (
SELECT ROWID FROM EmailAttachmentSearch WHERE EmailAttachmentSearch MATCH 'name:word1* OR type:word1* OR subject:word1* OR from:word1*'
AND ROWID IN (
SELECT ROWID FROM EmailAttachmentSearch WHERE EmailAttachmentSearch MATCH 'name:word2* OR type:word2* OR subject:word2* OR from:word2*'
)
);

原始答案在这里:

How do you match multiple column in a table with SQLite FTS3?

关于sql - SQLite 3.7.4 中字段子集的全文搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32247576/

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