2010-02-27 13 views
5

Quale sarà migliore tra le seguenti opzioni?SQL Server ed espressioni regolari

  1. Le espressioni regolari nelle ricerche di SQL Server, come le nuove versioni supportano gli oggetti CLR?
  2. Ricerca a testo completo?
  3. Lucene.net combinato con SQL Server?

Il nostro database avrà milioni e milioni di record e forniremo un'opzione di ricerca simile a Google, e come le ricerche di Google per qualsiasi cosa, cercheremo solo alcune categorie specifiche.

Per favore aiuto.

risposta

6
  1. Le espressioni regolari vanno bene finché i dati sono piccoli, molto piccoli.

  2. Il testo completo Ricerca con SQL è una buona scelta. Personalmente non mi piace questa opzione perché la sintassi di ricerca non è così espressiva come Lucene.Net. Ma in entrambi i casi è un buon modo per ottenere rapidamente una ricerca a tutto testo, senza entrare in molti dettagli.

  3. Lucene.Net offre più controllo/responsabilità sulla creazione e la manutenzione dell'indice, quindi se questo non ti spaventa, Lucene.Net offre risultati di alta qualità e puoi fare molto con esso. Puoi personalizzare e modificare quasi tutto per far funzionare il tuo motore di ricerca nel modo in cui vuoi che funzioni. Personalmente sceglierei Lucene.Net.

In ordinamento.

  1. non utilizzare le espressioni regolari.
  2. SQL Server Full Text Search è un modo semplice e veloce per ottenere una ricerca decente, senza essere tecnico.
  3. Lucene.Net è il migliore per la sua qualità di risultati, ma richiede di passare attraverso qualche apprendimento (se il tuo nuovo).
3

Per la ricerca di grandi quantità di dati, si desidera un indice di testo completo. Le espressioni regolari sono più flessibili e possono fornire più potere agli utenti per esprimere le loro domande, ma sarà più lento.

Lucene è una scelta eccellente, ma è possibile che le funzionalità integrate di SQL Server soddisfino già le esigenze dell'utente.

2

Nonostante sia un fan di tutto ciò che è SQL Server, preferisco lo lucene.net alla ricerca di testo completo di SQL Server.