Преобразование пользовательских фильтров поиска в динамический SQL - PullRequest
4 голосов
/ 26 мая 2011

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

Я хочу, чтобы пользователь мог напечатать что-то вроде следующего в текстовое поле:

Textbox Input: color=red|blue|green value>=5.00+<=10.00

Что преобразовало бы в следующий SQL, который я мог бы привязать к концу моего SQL-запроса:

AND (Artwork.Color = 'red' OR Artwork.Color = 'blue' OR Artwork.Color = 'green')
AND (Artwork.Price >= 50.00 AND Artwork.Price <= 100.00)

Что вы думаете о ...

1) Разрешить людям вводить эти пользовательские команды в текстовое поле и преобразовывать эти команды в SQL, это нормальная практика? Если нет, то как еще можно разрешить передачу расширенных параметров поиска при сохранении простоты страницы?

2) Лучший способ преобразовать эти пользовательские команды в SQL, как преобразовать неизвестное количество фильтров, разделенных потенциально несколькими операторами (+, |)?

Это веб-проект, построенный с использованием ASP.NET (C #) и MSSQL. Заранее спасибо! :)

Ответы [ 3 ]

2 голосов
/ 26 мая 2011

Лично я всегда шел по пути создания пользовательского интерфейса для всех параметров поиска с элементами управления для правильного ввода (списки флажков, средства выбора даты и т. Д.). Хотя это, в первую очередь, звучит больно, я думаю, что это сработает так же, как только вы подойдете к systax SQL ish, конвертируете его и сделаете его безопасным. Это также намного удобнее для не-гиков.

Вы всегда можете скрыть параметры в скрытой панели с надписью «Параметры поиска», затем она может появиться при необходимости и освободить экран, если нет.

1 голос
/ 26 мая 2011

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

1 голос
/ 26 мая 2011
  1. Да, это довольно обычная практика . Но, конечно, не все сайты допускают это.
  2. Придумайте свой собственный стандартизированный способ определения критериев поиска. Смотрите ссылки в номере 1.

Взгляните на ASP .NET Query Extender

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