Proper Strukturierung der Lucene.Net-Verwendung in einer ASP.NET MVC-Site

Ich erstelle eine ASP.NET MVC-Site, auf der ich Lucene.Net verwenden möchte. Ich habe mir überlegt, wie ich die Verwendung von Lucene strukturieren könnte, bin mir aber nicht sicher, ob meine geplante Architektur in Ordnung und effizient ist.

Mein PlanAufApplication_Start event in Global.asax: Ich überprüfe, ob der Index im Dateisystem vorhanden ist. Wenn er nicht vorhanden ist, erstelle ich ihn und fülle ihn mit Dokumenten, die aus der Datenbank extrahiert wurden.Wenn neue Inhalte eingereicht werden: Ich erstelle einIndexWriter, ein Dokument ausfüllen, in den Index schreiben und schließlich das @ entsorgIndexWriter. IndexWriters werden nicht wiederverwendet, da ich mir keine gute Möglichkeit vorstellen kann, dies in einer ASP.NET MVC-Anwendung zu tun.Wenn Inhalte bearbeitet werden: Ich wiederhole denselben Vorgang wie beim Senden neuer Inhalte, mit der Ausnahme, dass ich zuerst die alten Inhalte lösche und dann die Änderungen hinzufüge.Wenn ein Benutzer nach Inhalten sucht: Ich überprüfeHttpRuntime.Cache, um zu sehen, ob ein Benutzer in den letzten 5 Minuten bereits nach diesem Begriff gesucht hat. Wenn dies der Fall ist, gebe ich diese Ergebnisse zurück. ansonsten erstelle ich einIndexReader, eine Abfrage erstellen und ausführen, die Ergebnisse in @ eintragHttpRuntime.Cache, gebe sie an den Benutzer zurück und entsorge schließlich dasIndexReader. Noch einmal,IndexReaders werden nicht wiederverwendet.Meine FragenIst das eine gute Struktur -wie kann ich es verbessern?Gibt esjegliche Leistungs- / Effizienzprobleme Sollte ich mir bewusst sein?Ist auchdie IndexReaders und IndexWriters nicht wiederverwenden ein riesiger Code-Geruch?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage