Реализовать поиск в Azure SQL - PullRequest
2 голосов
/ 03 февраля 2012

Я перемещаю приложение .NET в Azure, поскольку объем хранимых данных увеличивается, а количество одновременно работающих пользователей увеличивается.Чтобы иметь возможность поиска, мне нужно надежное решение для поиска в SQL, который масштабируется.

Мне нужно возвращать совпадающие порядки при поиске (в одном отдельном поле, стиль Google).Данные хранятся в нескольких столбцах в этих связанных таблицах: Заказы, Клиенты и Адреса.

Я читал, что полнотекстовый поиск недоступен в Azure, поэтому я посмотрел в Lucene, но немного беспокоился о сохранении индекса в BLOB-объекте.Кажется неправильным попадать в хранилище больших двоичных объектов при каждом поиске.

Есть ли у кого-нибудь какие-либо предложения о том, как добиться этого надежного способа?

Ответы [ 3 ]

1 голос
/ 04 февраля 2012

Мы используем Solr / Lucene для лучших результатов полнотекстового поиска.Индексированные данные хранятся в локальном хранилище (до 2 ТБ).

Локальное хранилище похоже на c: дисковод, но вы должны объявить его в файле определения и получить ссылку на него, вызвав RoleEnvironment.GetLocalResource.

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

Другой вариант - использовать Azure Drive , но сохранитьпомните, что только один экземпляр может написать в него.

1 голос
/ 22 ноября 2014

Azure также развернул поиск как сервис API, который работает довольно хорошо.

Я работаю с большими данными и работает довольно хорошо.

1 голос
/ 03 февраля 2012

Одним из решений было бы создание таблицы «ключей».

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

Вам потребуется создать соответствующие триггеры для функций CRUD ваших таблиц заказов, клиентов и адресов.

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

Одно замечание: запросы в SQL Azure являются однопоточными, поэтому сканирование таблиц будет ужасным.

пример: где ключ, такой как 'abc%', будет использовать индекс пример2: где ключ, такой как '% abc%, будет выполнять сканирование таблицы, а для большого набора будет медленным.

Я поддерживаю 11 000 000 таблиц каталогов строк и 3 миллиона просмотров страниц сервера в день на языке sql azure в <200 мс, используя эти методы.

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