2011-01-16 7 views
6

Desidero creare un sistema che memorizzi i libri (e alcuni altri documenti). Gli utenti saranno in grado di accedere al sistema dove potranno vedere un elenco di tutti i libri o inserire una stringa di ricerca e ottenere un elenco dei libri contenenti la stringa di ricerca. Il mio problema è che non so come dovrei andare a conservare i miei libri. I libri devono essere ricercabili e la ricerca deve restituire l'ID, il nome e la pagina dei libri preferiti. Qualcosa di più simile al testo che circonda il termine di ricerca sarebbe un bel extra.Memorizzazione di libri in un database

Alcuni fatti che potrebbero aiutarti a ottenere la risposta migliore.

  • Il database non deve essere libero. Se SQL Server o Oracle DB mi saranno d'aiuto, allora sono tutto per quello.
  • I libri saranno circa ~ 100 (2-600 pagine)
  • I documenti saranno circa ~ 1000 (10-50 pagine)
  • Aggiunta di libri e documenti sarà un processo lento che accadrà di rado in modo che qualsiasi il tipo di reindicizzazione delle tabelle non deve essere veloce.
  • Non ho deciso come cercare i documenti. Ho bisogno che i miei risultati di ricerca siano classificati in base alla rilevanza in qualche modo. Questo potrebbe diventare una fonte di un'altra domanda in futuro
+1

Vuoi indicizzare l'intero contenuto di ogni libro e renderlo ricercabile? – froeschli

+1

Vuoi la copia soft dei libri da archiviare nel database o solo i meta-dati sui libri? – Nishant

+0

Stai essenzialmente chiedendo come creare un repository di documenti molto grandi ed essere ancora in grado di cercarli. Non sono sicuro che un database tradizionale sia la strada da percorrere. Ma sono abbastanza sicuro che probabilmente vorrai usare una soluzione esistente piuttosto che scrivere il tuo framework. Ad esempio, potresti voler usare Lucene per la ricerca. – Uri

risposta

3

Non utilizzare un database RDBMS. RDBMS è buono per la memorizzazione di dati relazionali. I dati che stai tentando di memorizzare sono un insieme di documenti. Utilizzare un archivio di documenti come couchDB o mongoDB. Tuttavia, dal momento che devi cercare questi dati, è meglio indicizzare questi dati in lucene che è costruito per tali esigenze

+0

Anche Solr sarebbe una buona scelta. – andrewWinn

+0

Solr è in realtà basato su lucene. Lo espone come un servizio web tra le altre cose – piyush

+0

Chiaramente devo leggere di più su questi database.Prima di me, la seguente ipotesi è corretta? Posso memorizzare i miei libri semplicemente come f.x. pdf (o ha bisogno di essere BLOB?) in questi db, hook Solr o Lucene di fronte ad esso, hanno quel sistema di indicizzare i miei libri e quindi basta cercare attraverso quel sistema? E se tutto il precedente è vero, la ricerca potrebbe in qualche modo darmi la pagina che la ricerca trova rilevante o dovrò memorizzare i miei libri pagina per pagina per avere quel lavoro? – Mannsi

0

A condizione che non si cerchi l'intero testo del libro (si consideri forse l'elaborazione iniziale per lo store un hash serializzato di parole univoche?):

SQL Server 2008R2 ha un nuovo sistema FILESTREAM che imporrà l'integrità relazionale utilizzando il motore DB ma manterrà i file nel file system. E 'il "meglio dei due mondi" e non dovrà preoccuparsi di come i piani di backup DB colpisce il BLOB

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

+0

In realtà stavo pensando di cercare l'intero testo del libro se questo non è troppo pesante di un processo – Mannsi

+0

Vuoi cercarli per frasi esatte? O la ricerca delle parole funzionerà? Mi chiedo se è necessario memorizzare letteralmente l'intero testo del libro in un campo ricercabile o se è possibile utilizzare solo le parole univoche – Matthew

0

SharePoint Foundation 2010 e il 2013 potrebbe essere la soluzione perfetta che è assolutamente libero di utilizzare . È possibile archiviare quantità di documenti in diverse librerie di documenti, aggiungere e modificare i relativi metadati e ricercarli utilizzando metadati come Titolo, Autore, ecc. E persino il contenuto del testo all'interno del libro.