2015-06-29 1 views
0

У меня есть одна проблема ТаблицаДобавить Efficient функцию поиска в Android App из Sqlite базы данных

ProblemTable 
    id problemTitle      problemDescription 
    1 machine got hand     water Motor got jammed 
    2 motor is not working    induction motor is not working 
    3 water connection is not proper  water connectivity problem in city 
    4 electric power machine problem  Electric power generator is not working 
    5 power down in my city    Power down in city 

Мне нужно добавить поиск функцию, которая может быть ключевое слово поиска или полнотекстового поиска, как из описания и названия. Как если бы я поиск по «мотор»

reasults will be 
    1 machine got hand     water Motor got jammed 
    2 motor is not working    induction motor is not working 

если я поиск по «power down in city» Результат поиска

4 electric power machine problem  Electric power generator is not working 
5 power down in my city    Power down in city 
3 water connection is not proper  water connectivity problem in city 

Как я реализовать эту форму БД SQLite полный текст, а также kewords поиска. Если у меня будет большое количество строк 100K, какая стратегия поиска будет хорошей? Пожалуйста, помогите мне.

+0

Я голосования в Закройте этот вопрос как вне темы, потому что OP, похоже, ничего не пытался. – nicael

+0

@nicael: я искал проблему, нужно ли мне делать несколько запросов из таблицы с «Like%» для каждого слова в тексте поиска или любую новую идею, где вы, ребята, можете помочь, может быть лучшим решением , Пожалуйста, дайте несколько решений. –

+0

Этот вопрос находится под угрозой закрытия. Вопросы, требующие помощи в домашних заданиях, должны содержать резюме работы, которую вы сделали до сих пор, чтобы решить проблему, и описание проблемы, которую вы решаете. –

ответ

0

Если вы хотите сделать полнотекстовый поиск в SQLite можно использовать FTS3

https://sqlite.org/fts3.html

Предполагая, что вы используете SQLiteOpenHelper синтаксис будет что-то вроде этого

// Full-text search index. Update using updateSessionSearchIndex method. 
// Use the porter tokenizer for simple stemming, so that "frustration" matches "frustrated." 
db.execSQL("CREATE VIRTUAL TABLE " + Tables.SESSIONS_SEARCH + " USING fts3(" 
      + BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," 
      + SessionsSearchColumns.BODY + " TEXT NOT NULL," 
      + SessionsSearchColumns.SESSION_ID 
        + " TEXT NOT NULL " + References.SESSION_ID + "," 
      + "UNIQUE (" + SessionsSearchColumns.SESSION_ID + ") ON CONFLICT REPLACE," 
      + "tokenize=porter)");