SQLite fts3:在列中搜索字符串

Man*_*yil 4 sqlite fts3

有没有办法在列中搜索特定的字符串?

我想搜索SELECT*从email_fts WHERE email_fts MATCH'到:"a@b.com"或者来自:"c@d.com"'

提前致谢,

马诺

Sam*_*eff 6

确保在FTS索引中创建正确的FTS列:

CREATE VIRTUAL TABLE email_fts USING fts3(subject, body, "to", "from");
Run Code Online (Sandbox Code Playgroud)

然后您可以搜索单个FTS列:

SELECT  rowid 
FROM    email_fts 
WHERE   "to" MATCH 'a@b.com'

UNION

SELECT  rowid 
FROM    email_fts 
WHERE   "from" MATCH 'c@d.com'
Run Code Online (Sandbox Code Playgroud)

编辑:我之前的回答ORWHERE条款中有一个.显然sqlite不支持将OR查询与MATCH条件组合.上述工会有效.

FTS文档在这里,这是文档中使用的示例之一.

http://sqlite.org/fts3.html

  • @Manoj,我没有意识到sqlite不支持将`OR`与`MATCH`结合起来.奇怪.我更新了答案,使用了一个工作正常的`UNION`.如果需要与非FTS数据结合使用,可以将联合包装在子查询中并将其连接到其他表上. (3认同)