У меня возникла проблема с полем автозаполнения, над которым я работаю. Поле, с которым я работаю, состоит из формы "<NAME> (<CODE>)"
. Когда пользователь начинает вводить текст, я хочу отобразить любые результаты, которые соответствуют либо NAME
, либо CODE
.
Например, если этот список содержит элементы и их коды, такие как «Персональный компьютер (ПК)», то я бы хотел, чтобы этот список всплывал в этой строке, если пользователь вводит «P», «ПК», «Per и т. д.
Я получил это, чтобы нормально работать в SQLite с таким запросом:
SELECT *
FROM table
WHERE name LIKE "?%" or code LIKE "?%"
Однако проблема, с которой я сейчас сталкиваюсь, заключается в том, как наилучшим образом отсортировать результаты, полученные из этого. Например, если кто-то вводит «ПК», я хочу, чтобы «Персональный компьютер (ПК)» был первым результатом. Однако, если есть еще один ряд (вам придется смириться со мной, поскольку он придуман) «Корпус ПК (301)», то я не могу упростить порядок результатов, чтобы гарантировать, что лучший матч появляется первым. При заказе по имени и коду сначала возвращается PC Case.
Мне нужен запрос, в котором сначала возвращается наилучшее совпадение, а не элементы в алфавитном порядке. Есть ли такая функция, которую я могу использовать в SQLite, чтобы получить это, или я должен вернуть результаты, а затем связываться с порядком в коде?
Если это поможет, я использую это для FilterQueryProviders на Android.