我有一个使用 FTS4 的 SQLite 数据库。它用于存储具有以下形式的消息 ID 的电子邮件:
使用 FTS MATCH 语法搜索消息,我得到以下结果:
SELECT rowid FROM emails WHERE emails MATCH '<8200@comms.io>'
这将返回正确的行。但是当我尝试查找多封电子邮件时,我得到一个空回复:
SELECT rowid FROM emails WHERE emails MATCH '<8200@comms.io> OR <8188@comms.io>'
不过奇怪的是,我可以在没有尖括号字符的情况下进行搜索。这将返回两行:
SELECT rowid FROM emails WHERE emails MATCH '8200@comms.io OR 8188@comms.io'
即使尖括号存在于存储的列中也是如此。我找不到提到这些是 SQLite 中的特殊字符,并且没有“或”,单项搜索工作正常。
为什么在我的复合搜索中这些字符的处理方式不同?