Имя этого шаблона проектирования для динамического поиска - легко добавлять / удалять / изменять критерии - PullRequest
0 голосов
/ 03 ноября 2010

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

Я постараюсь кратко объяснить, как этоработает.Пользователю предоставляется список (какого-то рода) доступных критериев поиска, и когда критерий выбран, он добавляется в «корзину» критериев, где он может быть уточнен или удален.

Давайте использоватьаналог книжного магазина.Критериями были бы «автор», «заголовок», «издатель» и «дата».Если пользователь выбирает критерии «автора», «автор» добавляется в «корзину» и получает некоторый контекст, управляемый правилами;для простоты, давайте просто скажем, что для «автора» вы можете предоставить пользователю поле для ввода текста.Затем, если пользователь выбирает «дату», ему предоставляются некоторые средства для ввода даты, и они могут выбрать что-то вроде «до» или «после»;в этот момент они могут добавить еще один критерий даты.Это позволило бы им выбрать «до» в 1-м и «после» во 2-м (чтобы обеспечить минимальный и максимальный поиск по «дате»).

Мощность в этом типе поискачто в любое время до или после запуска поиска пользователь может удалить (с небольшим « x ») любые заданные критерии или продолжить накапливать другие критерии.

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

РЕДАКТИРОВАТЬ: Этот сайт почти точно то, что я ищу (где написано "Используйте эту форму для создания вашего запроса" ):

http://opl.bibliocommons.com/search

Там вам дается один вход для положительных критериев, а другой - для отрицательных (хотя я считаю, что это можно было бы свернуть в один вход), а затемВы выбираете критерий и значение.Единственный аспект, отсутствующий в самом поиске, - это детальные элементы управления, такие как «начинается с», «больше чем» и т. Д., Но это, кажется, простое проектное решение.Также отсутствует, в результатах он не дает пользователю возможность дисквалифицировать критерии, которые были ранее выбраны.Опять же, это выглядит как дизайнерское решение;Я думаю, что было бы тривиально снова отобразить форму поиска, предварительно заполненную так же, как пользователь ввел ее.Другими словами, мне нужно, чтобы результаты загружались в область поиска, чтобы критерии могли быть перенастроены при необходимости.

Многогранный поиск , кажется, много раз использует этоподход, но я не верю, что этот метод построения критериев поиска специфичен для Faceted Search .Из того, что я могу почерпнуть, Фасетный поиск - это практика предоставления вашим элементам поиска> 1 граней , которые вы можете использовать для поиска.Я не хочу назначать несколько аспектов одному элементу данных;критерий линейный в том смысле, что я не верю, что существует какое-либо совпадение, при котором можно было бы даже назначить несколько граней .

Пожалуйста, попросите разъяснений, если необходимо!

Ответы [ 2 ]

2 голосов
/ 03 ноября 2010

Иногда это называется граненым поиском.

http://en.wikipedia.org/wiki/Faceted_search

2 голосов
/ 03 ноября 2010

Вы имеете в виду поиск с предикатом (поиск по предикату). Я полагаю, что понятие получено из дискретной математики.

Вот несколько примеров.

http://www.codeproject.com/KB/linq/VisualLinq.aspx

http://www.codeproject.com/KB/WPF/LtoE.aspx

...