Как реализовать функции поиска в приложениях ASP.NET MVC - PullRequest
21 голосов
/ 19 февраля 2009

Я могу представить множество способов реализации функций поиска в приложении ASP.NET MVC, но, поскольку я не могу найти много документации, мне было интересно, есть ли у вас какой-либо общий шаблон, технология или общий подход для реализации функций поиска в ASP. NET MVC приложение (похоже на stackoverflow). Вот некоторые технологии, которые я имею в виду:

  • Полнотекстовый поиск SQL Server
  • Внешний поисковик (например, Search Server 2008)
  • Lucene.NET

... но как лучше всего интегрировать их с ASP.NET MVC?

Идеи

Ответы [ 2 ]

5 голосов
/ 19 февраля 2009

Не совсем понятно, о чем конкретно вы спрашиваете, но в целом:

  1. Напишите помощник вида или частичный вид, который возвращает форму поиска. Называйте это на других ваших страницах, где бы вам ни понадобилось отображать окно поиска. Сделайте действие формы GET, а не POST.
  2. Для поиска по сайту вам, вероятно, понадобится поисковый контроллер. Для поиска в одном конкретном типе данных вы можете добавить действие к существующему контроллеру или аргумент к существующему действию. По большей части, единственное, что мы должны добавить, - это аргумент универсального действия «Список» для определенного типа данных. Форма поиска вызывает «Список» и устанавливает аргумент со строкой поискового запроса.
  3. Фактический поиск выполняется в вашем репозитории. Это единственная часть приложения, которая знает о таких вещах, как SQL Server или Lucene. Для тривиальных случаев контроллер может добавить .Where к IQueryable , возвращаемому репозиторием.
2 голосов
/ 19 февраля 2009

Я полагаю, что в одном из своих постов в блоге Джефф Этвуд рассказывает о том, как он использовал sitemaps , чтобы позволить Google справиться с большинством возможностей поиска при переполнении стека. Зачем писать свои собственные алгоритмы поиска, если люди все равно просто собираются использовать Google?

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