2011-01-16 4 views
6

Я хочу создать систему, в которой хранятся книги (и некоторые другие документы). Пользователи смогут войти в систему, где они могут либо просмотреть список всех книг, либо ввести некоторую строку поиска и получить список книг, содержащих строку поиска. Моя проблема в том, что я не знаю, как мне следует хранить мои книги. Книги obv должны быть доступны для поиска, и поиск должен вернуть идентификатор книг, имя и предпочтительную страницу. Все, что больше похоже на текст, окружающий поисковый запрос, будет приятным дополнением.Хранение книг в базе данных

Некоторые факты, которые могут помочь вам получить лучший ответ.

  • База данных не обязательно должна быть бесплатной. Если SQL Server или база данных Oracle помогут мне, чем я это сделаю.
  • книги будет около ~ 100 (2-600 страниц)
  • документы будут около ~ 1000 (10-50 страниц)
  • Добавление книг и документов будет медленный процесс, который происходит нечасто, так что любой тип переиндексации таблиц не должен быть быстрым.
  • Я не решил, как искать документы. Мне нужно, чтобы мои результаты поиска были ранжированы на основе релевантности. Это может стать источником другого вопроса в будущем.
+1

Вы хотите проиндексировать весь контент каждой книги и сделать ее доступной для поиска? – froeschli

+1

Вы хотите получить мягкую копию книг, которые будут храниться в базе данных или только метаданные о книгах? – Nishant

+0

Вы, по сути, спрашиваете, как создать репозиторий очень больших документов и по-прежнему сможете их искать. Я не уверен, что традиционная база данных - это путь. Но я уверен, что вы, вероятно, захотите использовать существующее решение, а не писать свою собственную фреймворк. Например, вы можете использовать Lucene для поиска. – Uri

ответ

3

Не используйте базу данных РСУБД. РСУБД хороши для хранения реляционных данных. Данные, которые вы пытаетесь сохранить, представляют собой набор документов. Используйте хранилище документов, например couchDB или mongoDB. Тем не менее, вам с тех пор нужно искать эти данные, лучше индексировать эти данные в lucene, который построен для таких нужд

+0

Solr тоже будет хорошим выбором. – andrewWinn

+0

Solr фактически основан на lucene. Он предоставляет его как веб-сервис, среди прочего, – piyush

+0

Очевидно, я должен больше узнать об этих базах данных.Прежде чем я это сделаю, правильно ли следующее предположение? Я могу хранить свои книги просто как f.x. pdf (или нужно ли это BLOB?) в этих db's, зацепите Solr или Lucene перед ним, указайте, что система индексирует мои книги, а затем просто просматривает эту систему? И если все предыдущее верно, может ли поиск каким-то образом дать мне страницу, которую поиск находит актуальной, или мне нужно будет хранить мои книги по страницам, чтобы эта работа работала? – Mannsi

0

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

SQL Server 2008R2 имеет новую систему FILESTREAM, которая будет обеспечивать реляционную целостность с использованием механизма БД, но будет поддерживать файлы в файловой системе. Это «лучшее из обоих миров», и вам не придется беспокоиться о том, как планы резервного копирования БД влияет на ваши BLOB-

http://msdn.microsoft.com/en-us/library/cc949109(v=sql.100).aspx

+0

Я действительно думал о поиске всего текста книги, если это не слишком тяжело для процесса – Mannsi

+0

Вы хотите найти их точными фразами? Или будет работать поиск слов? Мне интересно, нужно ли буквально хранить весь текст книги в поле поиска или если вы можете просто использовать уникальные слова – Matthew

0

SharePoint Foundation 2010 и 2013 может быть вашим идеальным решением, которое абсолютно свободно использовать , Вы можете хранить объемный объем документов в разных библиотеках документов, добавлять и редактировать их метаданные и искать их, используя метаданные, такие как Title, Author и т. Д. И даже текстовое содержимое внутри книги.

Смежные вопросы