如何在 sqlite 中查询一个 fts 表以查找一个匹配的列和另一个不匹配特定查询的列?
Posted
技术标签:
【中文标题】如何在 sqlite 中查询一个 fts 表以查找一个匹配的列和另一个不匹配特定查询的列?【英文标题】:How do I query an fts table in sqlite for one column matching and another NOT matching a particular query? 【发布时间】:2014-02-17 05:08:03 【问题描述】:我有一个建议表 (FTS4),用于为 android 操作栏搜索中的查询提供建议。我需要在表中查询其中一列(suggest_text_1
)与查询文本匹配而另一列(data_type
)不匹配特定查询的建议,例如2
。
我当前的选择文本是 table_suggestions MATCH ?
,我正在尝试使用以下选择参数文本替换 '?'
- suggest_text_1:*S1* AND data_type:NOT 2
。
问题是,即使数据存在,该表也为我提供了任何建议。能否指出我执行此查询的正确方法?
【问题讨论】:
【参考方案1】:Android 中的 SQLite 库通常不会使用增强的查询语法进行编译,因此您必须使用 standard query syntax 就像 suggest_text_1:S1* data_type:-2
之类的东西。
在 SQL 中,这将是:
SELECT docid,
suggest_text_1
FROM MyTable
WHERE MyTable MATCH 'suggest_text_1:' || ? || '* data_type:-' || ?
FTS 仅支持前缀查询;你不能在单词的开头使用*
。
【讨论】:
是的,我已经知道了,但我没有更新我的答案。无论如何,感谢您的回答。 :-)以上是关于如何在 sqlite 中查询一个 fts 表以查找一个匹配的列和另一个不匹配特定查询的列?的主要内容,如果未能解决你的问题,请参考以下文章
如何在android中使用Room Library fts4查询整个表