我有一个包含三列的简单数据库:标题,数据,信息。我将它们存储在SQLite FTS3数据库中,因此我可以轻松地执行全文搜索。我的应用基于Android的Searchable Dictionary示例。我不知道该怎么办的一件事是如何在两列之间进行搜索(匹配)。我基本上想查询并在标题和数据列中进行搜索。以下是准备查询的方法:

public Cursor searchMatches(String query, String[] columns) {
    String selection = KEY_TITLE + " MATCH ?";
    String[] selectionArguements = new String[] {query + "*"};
    return query(selection, selectionArguements, columns);
}


如果我没有遵循确切的格式KEY_TITLE + " MATCH ?"进行选择,那么即使FTS3文档指出其他方式都可以使用,其他任何方式都将无效。如何在Android中设置此选择以跨两列搜索?我尝试添加OR,但是我只是遇到了SQL逻辑错误。非常感谢!

最佳答案

好吧,尽管它不是最漂亮的,但我找到了一个可行的解决方案。它涉及使用UNION简单地组合两个MATCH查询。

    String wordQuery = builder.buildQuery(null, KEY_WORD + " MATCH '" + query + "*'", null, null, null, null, null);
    String definitionQuery = builder.buildQuery(null, KEY_DEFINITION + " MATCH '" + query + "*'", null, null, null, null, null);
    String unionQuery = builder.buildUnionQuery(new String[] {wordQuery, definitionQuery}, null, null);
    Cursor result = helper.getReadableDatabase().rawQuery(unionQuery, null);

关于android - FTS3中的多列匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8004387/

10-13 04:13