Merge "Remove duplicates into Search results"
This commit is contained in:
committed by
Android (Google) Code Review
commit
deb49d0f09
@@ -68,7 +68,9 @@ public class Index {
|
||||
|
||||
private static final String[] MATCH_COLUMNS = {
|
||||
IndexColumns.DATA_TITLE,
|
||||
IndexColumns.DATA_TITLE_NORMALIZED,
|
||||
IndexColumns.DATA_SUMMARY,
|
||||
IndexColumns.DATA_SUMMARY_NORMALIZED,
|
||||
IndexColumns.DATA_KEYWORDS
|
||||
};
|
||||
|
||||
@@ -280,8 +282,7 @@ public class Index {
|
||||
|
||||
final int outerDepth = parser.getDepth();
|
||||
final AttributeSet attrs = Xml.asAttributeSet(parser);
|
||||
final String fragmentTitle = getData(attrs,
|
||||
com.android.internal.R.styleable.Preference, com.android.internal.R.styleable.Preference_title);
|
||||
final String fragmentTitle = getDataTitle(attrs);
|
||||
|
||||
String title = getDataTitle(attrs);
|
||||
String summary = getDataSummary(attrs);
|
||||
@@ -290,9 +291,7 @@ public class Index {
|
||||
// Insert rows for the main PreferenceScreen node. Rewrite the data for removing
|
||||
// hyphens.
|
||||
inserOneRowWithFilteredData(database, localeStr, title, summary, fragmentName,
|
||||
fragmentTitle, iconResId, rank, keywords, NON_BREAKING_HYPHEN, EMPTY);
|
||||
inserOneRowWithFilteredData(database, localeStr, title, summary, fragmentName,
|
||||
fragmentTitle, iconResId, rank, keywords, NON_BREAKING_HYPHEN, HYPHEN);
|
||||
fragmentTitle, iconResId, rank, keywords);
|
||||
|
||||
while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
|
||||
&& (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
|
||||
@@ -306,9 +305,7 @@ public class Index {
|
||||
|
||||
// Insert rows for the child nodes of PreferenceScreen
|
||||
inserOneRowWithFilteredData(database, localeStr, title, summary, fragmentName,
|
||||
fragmentTitle, iconResId, rank, keywords, NON_BREAKING_HYPHEN, EMPTY);
|
||||
inserOneRowWithFilteredData(database, localeStr, title, summary, fragmentName,
|
||||
fragmentTitle, iconResId, rank, keywords, NON_BREAKING_HYPHEN, HYPHEN);
|
||||
fragmentTitle, iconResId, rank, keywords);
|
||||
}
|
||||
|
||||
} catch (XmlPullParserException e) {
|
||||
@@ -322,37 +319,47 @@ public class Index {
|
||||
|
||||
private void inserOneRowWithFilteredData(SQLiteDatabase database, String locale,
|
||||
String title, String summary, String fragmentName, String fragmentTitle,
|
||||
int iconResId, int rank, String keywords, String seq, String replacement) {
|
||||
int iconResId, int rank, String keywords) {
|
||||
|
||||
String updatedTitle;
|
||||
String updateSummary;
|
||||
if (title != null && title.contains(seq)) {
|
||||
updatedTitle = title.replaceAll(seq, replacement);
|
||||
} else {
|
||||
updatedTitle = title;
|
||||
if (title != null) {
|
||||
updatedTitle = title.replaceAll(NON_BREAKING_HYPHEN, HYPHEN);
|
||||
}
|
||||
if (summary != null && summary.contains(seq)) {
|
||||
updateSummary = summary.replaceAll(seq, replacement);
|
||||
} else {
|
||||
updateSummary = summary;
|
||||
else {
|
||||
updatedTitle = EMPTY;
|
||||
}
|
||||
|
||||
String updatedSummary;
|
||||
if (summary != null) {
|
||||
updatedSummary = summary.replaceAll(NON_BREAKING_HYPHEN, HYPHEN);
|
||||
} else {
|
||||
updatedSummary = EMPTY;
|
||||
}
|
||||
|
||||
String normalizedTitle = updatedTitle.replaceAll(HYPHEN, EMPTY);
|
||||
String normalizedSummary = updatedSummary.replaceAll(HYPHEN, EMPTY);
|
||||
|
||||
insertOneRow(database, locale,
|
||||
updatedTitle, updateSummary,
|
||||
updatedTitle, normalizedTitle, updatedSummary, normalizedSummary,
|
||||
fragmentName, fragmentTitle, iconResId, rank, keywords);
|
||||
}
|
||||
|
||||
private void insertOneRow(SQLiteDatabase database, String locale, String title,
|
||||
String summary, String fragmentName, String fragmentTitle,
|
||||
private void insertOneRow(SQLiteDatabase database, String locale,
|
||||
String updatedTitle, String normalizedTitle,
|
||||
String updatedSummary, String normalizedSummary,
|
||||
String fragmentName, String fragmentTitle,
|
||||
int iconResId, int rank, String keywords) {
|
||||
|
||||
if (TextUtils.isEmpty(title)) {
|
||||
if (TextUtils.isEmpty(updatedTitle)) {
|
||||
return;
|
||||
}
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(IndexColumns.LOCALE, locale);
|
||||
values.put(IndexColumns.DATA_RANK, rank);
|
||||
values.put(IndexColumns.DATA_TITLE, title);
|
||||
values.put(IndexColumns.DATA_SUMMARY, summary);
|
||||
values.put(IndexColumns.DATA_TITLE, updatedTitle);
|
||||
values.put(IndexColumns.DATA_TITLE_NORMALIZED, normalizedTitle);
|
||||
values.put(IndexColumns.DATA_SUMMARY, updatedSummary);
|
||||
values.put(IndexColumns.DATA_SUMMARY_NORMALIZED, normalizedSummary);
|
||||
values.put(IndexColumns.DATA_KEYWORDS, keywords);
|
||||
values.put(IndexColumns.FRAGMENT_NAME, fragmentName);
|
||||
values.put(IndexColumns.FRAGMENT_TITLE, fragmentTitle);
|
||||
|
@@ -28,7 +28,7 @@ public class IndexDatabaseHelper extends SQLiteOpenHelper {
|
||||
private static final String TAG = "IndexDatabaseHelper";
|
||||
|
||||
private static final String DATABASE_NAME = "search_index.db";
|
||||
private static final int DATABASE_VERSION = 100;
|
||||
private static final int DATABASE_VERSION = 101;
|
||||
|
||||
public interface Tables {
|
||||
public static final String TABLE_PREFS_INDEX = "prefs_index";
|
||||
@@ -39,7 +39,9 @@ public class IndexDatabaseHelper extends SQLiteOpenHelper {
|
||||
public static final String LOCALE = "locale";
|
||||
public static final String DATA_RANK = "data_rank";
|
||||
public static final String DATA_TITLE = "data_title";
|
||||
public static final String DATA_TITLE_NORMALIZED = "data_title_normalized";
|
||||
public static final String DATA_SUMMARY = "data_summary";
|
||||
public static final String DATA_SUMMARY_NORMALIZED = "data_summary_normalized";
|
||||
public static final String DATA_KEYWORDS = "data_keywords";
|
||||
public static final String FRAGMENT_NAME = "fragment_name";
|
||||
public static final String FRAGMENT_TITLE = "fragment_title";
|
||||
@@ -60,8 +62,12 @@ public class IndexDatabaseHelper extends SQLiteOpenHelper {
|
||||
", " +
|
||||
IndexColumns.DATA_TITLE +
|
||||
", " +
|
||||
IndexColumns.DATA_TITLE_NORMALIZED +
|
||||
", " +
|
||||
IndexColumns.DATA_SUMMARY +
|
||||
", " +
|
||||
IndexColumns.DATA_SUMMARY_NORMALIZED +
|
||||
", " +
|
||||
IndexColumns.DATA_KEYWORDS +
|
||||
", " +
|
||||
IndexColumns.FRAGMENT_NAME +
|
||||
@@ -113,6 +119,13 @@ public class IndexDatabaseHelper extends SQLiteOpenHelper {
|
||||
|
||||
@Override
|
||||
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
||||
if (newVersion > 100) {
|
||||
Log.w(TAG, "Detected schema version 100. " +
|
||||
"Index needs to be rebuilt for schema version 101");
|
||||
// We need to drop the tables and recreate them
|
||||
dropTables(db);
|
||||
bootstrapDB(db);
|
||||
}
|
||||
}
|
||||
|
||||
private String getBuildVersion(SQLiteDatabase db) {
|
||||
@@ -144,8 +157,10 @@ public class IndexDatabaseHelper extends SQLiteOpenHelper {
|
||||
public void onOpen(SQLiteDatabase db) {
|
||||
super.onOpen(db);
|
||||
|
||||
Log.i(TAG, "Using schema version: " + db.getVersion());
|
||||
|
||||
if (!Build.VERSION.INCREMENTAL.equals(getBuildVersion(db))) {
|
||||
Log.w(TAG, "Index needs to be rebuilt");
|
||||
Log.w(TAG, "Index needs to be rebuilt as build-version is not the same");
|
||||
// We need to drop the tables and recreate them
|
||||
dropTables(db);
|
||||
bootstrapDB(db);
|
||||
|
Reference in New Issue
Block a user