SQLite FTS5 MATCH 查询中的一元 NOT

Unary NOT in SQLite FTS5 MATCH query

提问人:Aldan Creo 提问时间:8/4/2021 最后编辑:Aldan Creo 更新时间:12/14/2021 访问量:229

问:

SQLite FTS5 文档说支持搜索查询,但看起来不支持一元运算符。SELECT ... WHERE MATCH '<query1> NOT <query2>'NOT

例如,如果我想搜索所有不匹配的内容,则不能使用.我必须使用 ,这是完全不同的东西(FTS5 模块永远不会看到运算符,因为它在引号之外)。只有引号内的文本是搜索查询。<query>MATCH 'NOT <query>'NOT MATCH '<query>'NOT

我需要找到一种方法在搜索查询中使用一元运算符。我不能在外面使用它,因为我只能控制搜索查询文本,而不能控制 SQL 语句的其余部分。NOT

我想到的一种可能方法是找到一个与任何内容匹配的搜索查询,然后执行.但是,我没有找到匹配搜索查询中所有内容的方法。MATCH '<match_anything> NOT <query>'

你能想出一种方法在搜索查询中拥有一元 NOT 运算符的行为吗?

SQLite 匹配 全文搜索 fts5

评论


答:

0赞 cakyus 12/14/2021 #1

试试这个..

SELECT * FROM docs
WHERE ROWID NOT IN ( 
  SELECT ROWID FROM docs WHERE content MATCH '<query>'
)

评论

0赞 Aldan Creo 12/15/2021
好主意!但是,正如我在最初的问题中所说,我需要找到一种方法在搜索查询中使用一元运算符。在这里,它在外面,所以就我而言,它没有用......但是,在一般情况下,它确实可以作为一种解决方法!NOT