sql >> Databasteknik >  >> RDS >> Sqlserver

Konfigurera Lucene.Net med SQL Server

Ja, jag har använt det för precis det du beskriver. Vi hade två tjänster - en för att läsa och en för att skriva, men bara för att vi hade flera läsare. Jag är säker på att vi kunde ha gjort det med bara en tjänst (skribenten) och bäddat in läsaren i webbappen och tjänsterna.

Jag har använt lucene.net som en allmän databasindexerare, så det jag fick tillbaka var i princip DB-id:n (till indexerade e-postmeddelanden), och jag har också använt det för att få tillbaka tillräckligt med information för att fylla i sökresultat eller liknande utan att röra vid databas. Det har fungerat utmärkt i båda fallen, även om SQL kan bli lite långsam, eftersom du i stort sett måste skaffa ett ID, välja ett ID etc. Vi kom runt detta genom att göra en temporär tabell (med bara ID-raden i den) och bulk-insättning från en fil (som var utgången från lucene) för att sedan gå med i meddelandetabellen. Gick mycket snabbare.

Lucene är inte perfekt, och du måste tänka lite utanför relationsdatabasen, för det är HELT inte en, men den är väldigt bra på vad den gör. Värt att titta på, och jag har fått höra att den inte har de "oj, förlåt, du måste bygga om ditt index igen"-problem som MS SQLs FTI har.

BTW, vi hade att göra med 20-50 miljoner e-postmeddelanden (och cirka 1 miljon unika bilagor), totalt cirka 20 GB luceneindex tror jag, och 250+ GB SQL-databas + bilagor.

Prestandan var minst sagt fantastisk - se bara till att du tänker på, och justerar, dina sammanslagningsfaktorer (när den slår samman indexsegment). Det finns inga problem med att ha mer än ett segment, men det kan bli ett STORT problem om du försöker slå samman två segment som har 1 mil artiklar i varje, och du har en bevakningstråd som dödar processen om det tar för lång tid... .. (ja, det sparkade oss i rumpan ett tag). Så håll det maximala antalet dokument per sak LÅGT (dvs. ställ inte in det på maxint som vi gjorde!)

EDIT Corey Trager dokumenterade hur man använder Lucene.NET i BugTracker.NET här.



  1. Hur släpper man kolumn med tvång?

  2. 6 sätt att ta bort dubbletter av rader som har en primärnyckel i SQLite

  3. Infoga Python Dictionary med Psycopg2

  4. Hur man bygger en Access-databas i molnet