sql >> Database >  >> RDS >> Sqlserver

Lucene.Net configureren met SQL Server

Ja, ik heb het gebruikt voor precies wat je beschrijft. We hadden twee diensten:een voor lezen en een voor schrijven, maar alleen omdat we meerdere lezers hadden. Ik weet zeker dat we het hadden kunnen doen met slechts één service (de schrijver) en de lezer hadden ingesloten in de webapp en -services.

Ik heb lucene.net gebruikt als een algemene database-indexer, dus wat ik terugkreeg waren in feite DB-ID's (naar geïndexeerde e-mailberichten), en ik heb het ook gebruikt om genoeg informatie terug te krijgen om zoekresultaten of iets dergelijks te vullen zonder de databank. Het werkte in beide gevallen prima, hoewel de SQL een beetje traag kan worden, omdat je vrijwel een ID moet krijgen, een ID moet selecteren, enz. We hebben dit omzeild door een tijdelijke tabel te maken (met alleen de ID-rij erin) en bulk-invoegen vanuit een bestand (wat de uitvoer was van lucene) en vervolgens toevoegen aan de berichtentabel. Was een stuk sneller.

Lucene is niet perfect, en je moet een beetje buiten de relationele databasebox denken, want het is TOTAAL niet één, maar het is heel erg goed in wat het doet. Het is de moeite waard om te bekijken, en, zo is mij verteld, heeft niet de "oeps, sorry, je moet je index opnieuw opbouwen" problemen die MS SQL's FTI heeft.

Tussen haakjes, we hadden te maken met 20-50 miljoen e-mails (en ongeveer 1 miljoen unieke bijlagen), in totaal ongeveer 20 GB lucene-index denk ik, en 250+ GB SQL-database + bijlagen.

De prestaties waren op zijn zachtst gezegd fantastisch - zorg er gewoon voor dat u nadenkt over uw samenvoegfactoren en deze aanpast (wanneer het indexsegmenten samenvoegt). Het is geen probleem om meer dan één segment te hebben, maar er kan een GROOT probleem zijn als je twee segmenten probeert samen te voegen die elk 1mil items bevatten, en je hebt een watcher-thread die het proces doodt als het te lang duurt... .. (ja, dat was even een schop onder onze kont). Dus houd het maximale aantal documenten per thinggie LAAG (dwz zet het niet op maxint zoals wij deden!)

EDIT Corey Trager heeft hier gedocumenteerd hoe je Lucene.NET in BugTracker.NET gebruikt.



  1. Populaire Docker-afbeeldingen voor MySQL en MariaDB Server

  2. Moet Oracle merge omzetten in query naar PostgreSQL

  3. pyspark gebruiken om verbinding te maken met PostgreSQL

  4. MariaDB JSON_CONTAINS() uitgelegd