From 44a175732dc4b872515f978b986ef7b357fe2f00 Mon Sep 17 00:00:00 2001 From: Tom Ouyang Date: Mon, 13 Apr 2015 17:49:17 -0700 Subject: Add affinity model for contact names. This allows us to: 1. Rank contacts and only add the top N names to the keyboard LM. 2. Avoid adding duplicate names. Note: The affinity calcualuation is limited by the fact that some apps currently do not update the TIMES_CONTACTED counter. To better handle this case, the new measure also takes into account whether or not a name is in the visible contacts group. Bug: 20053274 Change-Id: I2741cb8958667d4a294aba8c437a45cec4b42dc7 --- .../android/inputmethod/latin/ContactsDictionaryConstants.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'java/src/com/android/inputmethod/latin/ContactsDictionaryConstants.java') diff --git a/java/src/com/android/inputmethod/latin/ContactsDictionaryConstants.java b/java/src/com/android/inputmethod/latin/ContactsDictionaryConstants.java index 8d8faca58..022940910 100644 --- a/java/src/com/android/inputmethod/latin/ContactsDictionaryConstants.java +++ b/java/src/com/android/inputmethod/latin/ContactsDictionaryConstants.java @@ -26,7 +26,8 @@ public class ContactsDictionaryConstants { /** * Projections for {@link Contacts.CONTENT_URI} */ - public static final String[] PROJECTION = { BaseColumns._ID, Contacts.DISPLAY_NAME }; + public static final String[] PROJECTION = { BaseColumns._ID, Contacts.DISPLAY_NAME, + Contacts.TIMES_CONTACTED, Contacts.LAST_TIME_CONTACTED, Contacts.IN_VISIBLE_GROUP }; public static final String[] PROJECTION_ID_ONLY = { BaseColumns._ID }; /** @@ -36,13 +37,16 @@ public class ContactsDictionaryConstants { public static final int FREQUENCY_FOR_CONTACTS_BIGRAM = 90; /** - * The maximum number of contacts that this dictionary supports. + * Do not attempt to query contacts if there are more than this many entries. */ - public static final int MAX_CONTACT_COUNT = 10000; + public static final int MAX_CONTACTS_PROVIDER_QUERY_LIMIT = 10000; /** * Index of the column for 'name' in content providers: * Contacts & ContactsContract.Profile. */ public static final int NAME_INDEX = 1; + public static final int TIMES_CONTACTED_INDEX = 2; + public static final int LAST_TIME_CONTACTED_INDEX = 3; + public static final int IN_VISIBLE_GROUP_INDEX = 4; } -- cgit v1.2.3-83-g751a