【问题标题】:How do I query an fts table in sqlite for one column matching and another NOT matching a particular query?如何在 sqlite 中查询一个 fts 表以查找一个匹配的列和另一个不匹配特定查询的列?
【发布时间】: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

问题是,即使数据存在,该表也为我提供了任何建议。能否指出我执行此查询的正确方法?

【问题讨论】:

    标签: java android sqlite fts3 fts4


    【解决方案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 仅支持前缀查询;你不能在单词的开头使用*

    【讨论】:

    • 是的,我已经知道了,但我没有更新我的答案。无论如何,感谢您的回答。 :-)
    猜你喜欢
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    相关资源
    最近更新 更多