绑定selectionArgs到跨越多列的FTS3查询

时间:2013-11-30 21:30:04

标签: android full-text-search android-sqlite fts3

我构建选择字符串以跨多列执行FTS3搜索:

final String selection = "table MATCH 'column1:? OR column2:?'"

我也传递包含搜索词的selectionArgs。问题是我在参数绑定期间遇到异常:

  

11-30 13:22:27.475 26281-26323 / com.example.myapp   W / SuggestionsAdapter:搜索建议查询引发异常。       java.lang.IllegalArgumentException:无法绑定索引2处的参数,因为索引超出范围。该语句有0个参数。               在android.database.sqlite.SQLiteProgram.bind(SQLiteProgram.java:212)               在android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:166)

当我使用硬编码的搜索词替换MATCH参数字符串中的问号并设置selectionArgs = null时,查询将起作用并返回正确的结果。

如何将selectionArgs绑定到搜索多列的FTS3查询?

1 个答案:

答案 0 :(得分:0)

以下方法对我有用:

  • 使用String.format()构建selectionArgs,使用搜索字词作为参数。
  • 使用单个参数构建selection

在代码中:

final String selection = "table MATCH ?"
final String[] selectionArgs = { String.format("column1:%s* OR column2:%s*", term1, term2) };