Для элементов управления списком, должно ли совпадение по типу поиска совпадать в начале записи или где-либо в записи? - PullRequest
0 голосов
/ 23 сентября 2008

У меня есть элемент управления списком в GTK + (gtk.TreeView с одним столбцом), с включенным «поиск по типу» (поэтому при вводе любого текста откроется небольшое поле поиска для поиска в записях списка). Теперь, если пользователь вводит какой-либо текст для поиска, например, «abc», должен ли я искать только записи , начиная с с «abc», или я должен искать записи, содержащие «abc» где-то в их тексте?

(ссылки на соответствующие Руководства по взаимодействию с людьми приветствуются)

Ответы [ 4 ]

1 голос
/ 08 октября 2008

Как сказал Омер Кохеджи, правильный ответ во многом зависит от того, что содержит список. Однако на основе принципа наименьшего удивления я бы порекомендовал сопоставление в начале записи; так происходит с большинством списков (например, в Интернете, при выборе часового пояса в установках Linux и т. д.), поэтому большинство пользователей ожидают такого поведения.

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

0 голосов
/ 23 сентября 2008

Наверняка правильный ответ это зависит? Какова ваша тема?

Я бы проголосовал за любое место в тексте или за любое целое слово в тексте (т. Е. Не обязательно за середину слова), если вам лень.

Хотя в некоторых случаях точное совпадение с первым словом предпочтительнее.

0 голосов
/ 23 сентября 2008

в идеале поиск при вводе будет выполнять частичное сопоставление упорядоченных символов, пока не будет достигнута граница слова. Например (в псевдокоде):

var input =  getInput();
    input =~ s/(.)/$1.*/g;
return find_items(input); // Assuming this takes a regexp as its input

Это означает, что для input = "Shing"

И база данных, содержащая {..., Sine, Shining, 'The Shining', ...}

Выход будет {Shining, 'The Shining'}

Когда достигнута граница слова, соответствие должно измениться, чтобы соответствовать непрерывным частям слова. Грубо говоря:

var input =  getInput();
    input =~ s/(\w+)/$1.*/g;
return find_items(input); // Assuming this takes a regexp as its input

такой, что для input = "Th Shi"

И та же база данных, что и выше

Выход будет {'The Shining'}

Редактировать (адрес запроса рекомендаций UI): Вы можете сделать хуже, чем смотреть это видео

0 голосов
/ 23 сентября 2008

Как пользователь, я ценю поиск "содержит", а не "начинается с". Иногда вы не можете точно вспомнить, что вы ищете, и более полезно предлагать вещи, которые похожи на ваш поисковый запрос, а не использовать его как прямой фильтр.

Бывают случаи, когда есть несколько способов перечислить что-то, например:

Shining, The - King, Stephen
The Shining - Stephen King
King, Stephen - The Shining

и т. Д. По моему мнению, ввод "Shining" должен вернуть любой из этих результатов.

...