使用 room 和 FTS4 进行更复杂的 MATCH 查询的正确语法是什么 我在文档中找到了我想使用的语法
SELECT docid FROM docs WHERE docs MATCH '("sqlite database" OR "sqlite library") AND linux';
SELECT * FROM docs WHERE docs MATCH 'title:linux problems';
查询 | 结果 |
---|---|
|
(x) |
|
好的 |
|
好的(部分,只有最后一颗星有效,不会找到“mysql”) |
|
好的 |
|
(x) |
|
(x) |
AND 似乎不起作用。我用引号或括号做错了,
基本上我想获得与 AND OR 相同的 LIKE 以及不同列上的不同值
我认为 AND 问题是只有 STANDARD 查询语法可用,而不是 ENHANCED 查询语法。
参见(增强)
与(标准)
STANDARD 语法不包含 AND 关键字,因此被视为单词本身。然而 AND 是隐含的,因此为什么
MATCH '("sqlite database" OR "sqlite library") linux'
返回预期结果。
关于
MATCH 'content:("*sql*" OR "*lin*")'
好的(部分,只有最后一颗星有效,不会找到“mysql”)
这是因为 FTS 试图匹配类似于索引的术语,如果它以通配符开头,则需要进行完整扫描,而不是跳到 s,然后是 sq,然后是 sql 等等。
因此,我相信您可以/应该使用:-
MATCH 'content:("sql*" OR "lin*" OR "mysql*")'