Как я могу вернуть запись, основанную только на частичном совпадении этой записи? - PullRequest
3 голосов
/ 10 июня 2011

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

Например, если пользователь ищет «ed», я бы хотел, чтобы любая запись, содержащая «ed», была возвращена. Таким образом, если в столбце имени была запись с именем «Эдвард», она будет возвращена как совпадающая. Если в описании была запись с «завершено», она также возвращает эту запись как совпадение.

Я изучил полнотекстовый поиск, но не уверен, что это то, что мне нужно сделать, или он будет делать то, что мне нужно.

Как всегда, я не ищу ответ за слово, я просто ищу направление.

Ответы [ 2 ]

10 голосов
/ 10 июня 2011

Никогда ранее не использовал SQLite, но имеет ли он оператор "LIKE"?

В MySQL вы можете сделать что-то вроде:

SELECT name FROM list WHERE name LIKE '%ed%';
1 голос
/ 10 июня 2011

Вот код, который будет делать то, что вы хотите, если вы запрашиваете контент-провайдера. Если вы запрашиваете объект базы данных sqlite напрямую, параметры аналогичны, но различаются.

String search = "ed";

// surround it with the SQL wildcard '%'
String q = "%" + search + "%"

Cursor c = getContentResolver().query(uri,
    new String[] { column1, column2 },
    "column_name like ?",
    new String[] { q },
    null);

Фрагмент будет искать поставщика контента на uri строку ed в column_name.

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