Ja, ich habe es genau für das verwendet, was Sie beschreiben. Wir hatten zwei Dienste - einen zum Lesen und einen zum Schreiben, aber nur, weil wir mehrere Leser hatten. Ich bin mir sicher, dass wir es mit nur einem Service (dem Autor) hätten machen können und den Reader in die Web-App und Services eingebettet hätten.
Ich habe lucene.net als allgemeine Datenbank-Indexer verwendet, also was ich zurückbekommen habe, war im Grunde Datenbank-IDs (für indizierte E-Mail-Nachrichten), und ich benutze es auch, um genügend Informationen zu erhalten, um Suchergebnisse zu füllen oder so ohne die Datenbank zu berühren. Es hat in beiden Fällen gut funktioniert, das SQL kann etwas langsam werden, da man ziemlich genau eine ID bekommen muss, eine ID auswählen muss usw. Wir haben es geschafft, indem wir eine temporäre Tabelle (mit nur der ID-Zeile) erstellt haben Masseneinfügung von einer Datei (die die Ausgabe von Lucene war), dann Verbinden mit der Nachrichtentabelle. War viel schneller.
Lucene ist nicht perfekt, und Sie müssen ein wenig außerhalb der relationalen Datenbank Box denken, weil es TOTAL ist nicht eins, aber es ist sehr, sehr gut, was es tut. Einen Blick wert, und, ich habe gesagt, hat nicht die "oops, sorry, müssen Sie Ihren Index neu aufbauen" Probleme, die MS SQL FTI tut.
BTW, hatten wir mit 20-50Millionen E-Mails (und rund 1 Million einzigartige Anhänge), insgesamt etwa 20 GB Lucene Index denke ich, und 250 + GB SQL-Datenbank + Anhänge.
Die Leistung war fantastisch, gelinde gesagt - stellen Sie sicher, dass Sie über Ihre Merge-Faktoren nachdenken und sie optimieren (wenn Indexsegmente zusammengeführt werden). Es gibt kein Problem mit mehr als einem Segment, aber es kann ein GROßES Problem geben, wenn Sie versuchen, zwei Segmente zusammenzuführen, die jeweils 1mil Elemente enthalten, und Sie haben einen Watcher-Thread, der den Prozess beendet, wenn es zu lange dauert ... .. (ja, das hat uns für eine Weile in den Arsch getreten). So behalten Sie die maximale Anzahl der Dokumente pro Thinggie LOW (dh nicht auf maxint wie wir es getan!)
Bearbeiten Corey Trager dokumentiert, wie Lucene.NET in BugTracker.NET here zu verwenden.
Ich habe auch die Simple Savant-Bibliothek für Amazon SimpleDB mit Lucene.NET mit Volltextindizierung unterstützt. Die Architektur wird hier beschrieben: http://simplesavant.codeplex.com/wikipage?title=Full-Text%20Indexing&referringTitle=Documentation –