diff options
author | Yorke Lee <yorkelee@google.com> | 2013-09-10 09:29:23 -0700 |
---|---|---|
committer | Yorke Lee <yorkelee@google.com> | 2013-09-10 10:56:40 -0700 |
commit | d639ddd61fc7b6f4a7879d583bfd2b595b066265 (patch) | |
tree | 3a8cc34459c4bc689d85a6638e89ad57474c9c80 | |
parent | 66d989c439fbb82a5b40a7efffa2f28208cf11d8 (diff) | |
download | ContactsProvider-d639ddd61fc7b6f4a7879d583bfd2b595b066265.tar.gz |
Fix PHONE_FILTER and CALLABLES_FILTER search behaviorandroid-4.4_r0.7
These two filters now only perform name lookups. The search index manager
indexes names, nicknames, and organization title and company name for
name lookups.
Bug: 10680335
Change-Id: I283c61af64a2f104b7482a2819ed4b8a238cba04
5 files changed, 19 insertions, 7 deletions
diff --git a/src/com/android/providers/contacts/ContactsDatabaseHelper.java b/src/com/android/providers/contacts/ContactsDatabaseHelper.java index e0ac81d7..fedb5648 100644 --- a/src/com/android/providers/contacts/ContactsDatabaseHelper.java +++ b/src/com/android/providers/contacts/ContactsDatabaseHelper.java @@ -112,10 +112,10 @@ public class ContactsDatabaseHelper extends SQLiteOpenHelper { * 550-599 Honeycomb-MR2 * 600-699 Ice Cream Sandwich * 700-799 Jelly Bean - * 800-899 Key Lime Pie + * 800-899 Kitkat * </pre> */ - static final int DATABASE_VERSION = 802; + static final int DATABASE_VERSION = 803; private static final String DATABASE_NAME = "contacts2.db"; private static final String DATABASE_PRESENCE = "presence_db"; @@ -2511,6 +2511,13 @@ public class ContactsDatabaseHelper extends SQLiteOpenHelper { oldVersion = 802; } + if (oldVersion < 803) { + // Rebuild the search index so that names, organizations and nicknames are + // now indexed as names. + upgradeSearchIndex = true; + oldVersion = 803; + } + if (upgradeViewsAndTriggers) { createContactsViews(db); createGroupsView(db); diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java index 3b611e9f..b71892cc 100644 --- a/src/com/android/providers/contacts/ContactsProvider2.java +++ b/src/com/android/providers/contacts/ContactsProvider2.java @@ -5682,13 +5682,11 @@ public class ContactsProvider2 extends AbstractContactsProvider sb.append(" AND ("); boolean hasCondition = false; - // TODO This only searches the name field. Search other fields, such as - // note, nickname, as well. (Which should be disabled by default.) - // Fix EMAILS_FILTER too. + // This searches the name, nickname and organization fields. final String ftsMatchQuery = searchDisplayName ? SearchIndexManager.getFtsMatchQuery(filterParam, - FtsQueryBuilder.SCOPED_NAME_NORMALIZING) + FtsQueryBuilder.UNSCOPED_NORMALIZING) : null; if (!TextUtils.isEmpty(ftsMatchQuery)) { sb.append(Data.RAW_CONTACT_ID + " IN " + @@ -5697,7 +5695,7 @@ public class ContactsProvider2 extends AbstractContactsProvider " JOIN " + Tables.RAW_CONTACTS + " ON (" + Tables.SEARCH_INDEX + "." + SearchIndexColumns.CONTACT_ID + "=" + RawContactsColumns.CONCRETE_CONTACT_ID + ")" + - " WHERE " + Tables.SEARCH_INDEX + " MATCH '"); + " WHERE " + SearchIndexColumns.NAME + " MATCH '"); sb.append(ftsMatchQuery); sb.append("')"); hasCondition = true; diff --git a/src/com/android/providers/contacts/DataRowHandlerForNickname.java b/src/com/android/providers/contacts/DataRowHandlerForNickname.java index 95f24f5a..9c32df94 100644 --- a/src/com/android/providers/contacts/DataRowHandlerForNickname.java +++ b/src/com/android/providers/contacts/DataRowHandlerForNickname.java @@ -92,6 +92,7 @@ public class DataRowHandlerForNickname extends DataRowHandlerForCommonDataKind { @Override public void appendSearchableData(IndexBuilder builder) { + builder.appendNameFromColumn(Nickname.NAME); builder.appendContentFromColumn(Nickname.NAME); } } diff --git a/src/com/android/providers/contacts/DataRowHandlerForOrganization.java b/src/com/android/providers/contacts/DataRowHandlerForOrganization.java index 44146e8f..629d9493 100644 --- a/src/com/android/providers/contacts/DataRowHandlerForOrganization.java +++ b/src/com/android/providers/contacts/DataRowHandlerForOrganization.java @@ -126,6 +126,8 @@ public class DataRowHandlerForOrganization extends DataRowHandlerForCommonDataKi @Override public void appendSearchableData(IndexBuilder builder) { + builder.appendNameFromColumn(Organization.TITLE); + builder.appendNameFromColumn(Organization.COMPANY); builder.appendContentFromColumn(Organization.TITLE); builder.appendContentFromColumn(Organization.COMPANY, IndexBuilder.SEPARATOR_COMMA); builder.appendContentFromColumn(Organization.PHONETIC_NAME, diff --git a/src/com/android/providers/contacts/SearchIndexManager.java b/src/com/android/providers/contacts/SearchIndexManager.java index d45009e1..aeabaeaf 100644 --- a/src/com/android/providers/contacts/SearchIndexManager.java +++ b/src/com/android/providers/contacts/SearchIndexManager.java @@ -186,6 +186,10 @@ public class SearchIndexManager { mSbTokens.append(token); } + public void appendNameFromColumn(String columnName) { + appendName(getString(columnName)); + } + public void appendName(String name) { if (TextUtils.isEmpty(name)) { return; |