Реализация лучшего поиска из sqlite android - PullRequest
0 голосов
/ 05 декабря 2018

В настоящее время я использую SearchView для ввода и при каждом изменении ввода я вызываю searchVideo ()

, это моя функция searchVideo:

public void searchVideo(String s)
    {
        videos.clear();

        SQLiteDatabase sqLiteDatabase = getActivity().openOrCreateDatabase("CodifyData", MODE_PRIVATE, null);
        String sql = "SELECT * FROM appdata_videos WHERE subcode='"+dbName+"' AND title LIKE '%"+s+"%'";
        Cursor c = sqLiteDatabase.rawQuery(sql,null);

        int idID = c.getColumnIndex("id");
        int linkID = c.getColumnIndex("link");
        int titleID = c.getColumnIndex("title");

        while(c.moveToNext())
        {
            videos.add(new VideoDataModel(c.getString(idID), c.getString(titleID), c.getString(linkID)));
        }

        c.close();

        videoAdapter.notifyDataSetChanged();
    }

Но когда пользователь вводит два слова иэти две работы содержатся в заголовке, но не рядом друг с другом или способом, которым они вводятся пользователем, поиск не удался, поэтому что я могу сделать, чтобы сделать это лучше, не нужно сложное решение, но что-то более простое ипроще в реализации.

1 Ответ

0 голосов
/ 05 декабря 2018

разделите вашу строку на пробел, чтобы получить массив слов и сопоставить значения с запросом, подобным этому:

String[] splitedValues = str.split("\\s+");
            String query="SELECT * FROM appdata_videos WHERE subcode='"+dbName+"' ";
            for(int i=0;i<splitedValues .length;i++){

                    query+="AND title LIKE '%"+splitedValues[i]+"%' ";

            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...