aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorke Lee <yorkelee@google.com>2013-09-10 09:29:23 -0700
committerYorke Lee <yorkelee@google.com>2013-09-10 10:56:40 -0700
commitd639ddd61fc7b6f4a7879d583bfd2b595b066265 (patch)
tree3a8cc34459c4bc689d85a6638e89ad57474c9c80
parent66d989c439fbb82a5b40a7efffa2f28208cf11d8 (diff)
downloadContactsProvider-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
-rw-r--r--src/com/android/providers/contacts/ContactsDatabaseHelper.java11
-rw-r--r--src/com/android/providers/contacts/ContactsProvider2.java8
-rw-r--r--src/com/android/providers/contacts/DataRowHandlerForNickname.java1
-rw-r--r--src/com/android/providers/contacts/DataRowHandlerForOrganization.java2
-rw-r--r--src/com/android/providers/contacts/SearchIndexManager.java4
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;