Лучший способ поиска данных в файлах XML? - PullRequest
2 голосов
/ 19 февраля 2009

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

Эти xml-файлы содержат личную информацию, и поиск основан на 10 элементах, таких как фамилия, имя, адрес электронной почты и т. Д. Наш текущий план состоит в создании основного XmlDocument со всеми доступными для поиска данными и ключом к фактический файл. Так что, когда пользователь ищет данные, мы сначала смотрим на главный файл и получаем результаты. Мы также будем кешировать фактические xml-файлы из последних поисков, чтобы последующие поиски по аналогии можно было быстро обработать.

Наше приложение представляет собой веб-приложение .net 2.0.

Ответы [ 5 ]

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

Первое: насколько большие xml-файлы? XmlDocument не масштабируется до "огромного" ... но может обрабатывать "большое" ОК.

Второе: можете ли вы поместить данные в обычную структуру базы данных (возможно, SQL Server Express Edition), проиндексировать ее и получить доступ через обычный TSQL? Это обычно превосходит поиск xpath. Точно так же, если он структурирован, SQL Server 2005 и выше поддерживает тип данных xml, который уничтожает данные - это позволяет индексировать и запрашивать данные XML в базе данных, не имея всего DOM в памяти (переводит xpath в реляционные запросы).

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

Индексируйте ваши XML-файлы. Посмотрите на http://incubator.apache.org/lucene.net/

Недавно я использовал его на своей предыдущей работе для кэширования нашей базы данных SQL для быстрого поиска и очень небольших накладных расходов.

Обеспечивает быстрый поиск содержимого внутри XML-файлов (все зависит от того, как вы организовали кэш).

Очень легко и просто использовать.

Намного проще, чем пытаться перебрать кучу файлов.

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

Хм, звучит так, как будто вы строите базу данных поверх Xml, для производительности я бы считал эти файлы в выбранную вами БД и позволил бы ей выполнять индексацию и поиск. Если это не вариант, зайдите в XPath или выполните собственный исчерпывающий поиск с помощью XmlReader.

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

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

Если вы можете хранить данные в базе данных SQL Server, вы можете использовать SQL Server во встроенной функциональности запросов XPath.

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

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

...