2016-08-18 5 views
0

У меня есть требование создать функцию поиска на веб-странице. Поля для фильтрации: from date - to date, first money value - second money value, выпадающий список с предопределенными значениями и свободный текст.Как искать огромный объем данных на сервере Sql и разбивать их на страницы в MVC?

База данных с Sql Server и CMS - Umbraco. Я искал лучшее решение, но, к сожалению, еще не нашел!

  • Я попытался исследовать Elasticsearch, Lucene и других платформ, как они, но они не соответствуют моим потребностям, потому что я должен использовать Full Text Search в Sql Server.

  • Сущность не подходит для этого случая, поскольку она не поддерживает Full Text Search на сервере Sql. Есть трюки, чтобы сделать это, но в первую очередь это не одно и то же ...

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

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

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

Кто-нибудь реализовал хорошее решение для поиска огромного количества данных, где параметры являются динамическими (что делает запрос динамическим, а) и данные, полученные потребностям быть пронумерованы в виде? Я очень ценю, если кто-нибудь даст мне некоторую информацию о том, как сделать разбиение на страницы в MVC или Umbraco

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

Если нет хороший способ со стороны сервера, чтобы сделать все вещи, пожалуйста, предоставить мне некоторую информацию, как использовать Elasticsearch или Lucene в C#

+0

для пагинацией вы можете использовать следующий запрос SELECT * FROM

ORDER BY OFFSET ROWS FETCH NEXT ROWS ONLY.Вместо того, чтобы загружать все данные, вы загружаете около 50 строк и выполняете разбиение на страницы – Mani

+0

Это не так полезно, поскольку он должен фильтровать данные перед добавлением разбивки на страницы –

+0

Спасибо за предложение @Mani, но мне нужен запрос фильтрации или лучшая реализация, как искать сначала, а затем я могу использовать ваше предложение. –

ответ

1

Когда вы говорите «на стороне сервера», я полагаю, вы имеете в виду SQL Сервер ... Если данные, которые нужно запросить, записываются в Umbraco, я бы избегал обхода уровня доступа к данным Umbraco, читая непосредственно из базы данных, так как вам придется переписать логику для обработки публикации &.

Umbraco использует Examine (построен на вершине Lucene) для обеспечения внутреннего поиска и легко настраивается для создания собственного.

Документацию по осмотру можно найти here и полезное руководство по началу работы можно найти here.