2008-11-07 8 views
12

Ist Lucene.Net als Suchmaschine für häufig wechselnde Inhalte geeignet?Ist Lucene.Net als Suchmaschine für häufig wechselnde Inhalte geeignet?

Oder spezifischer, kann jemand eine subjektive Meinung darüber geben, wie schnell lucene.net Indizes aktualisiert werden können. Jeder andere Ansatz zum Suchen häufig wechselnder Inhalte wäre großartig.

Wir entwickeln ein Forum. Forenbeiträge werden häufig zum Forum-Repository hinzugefügt. Wir denken, dass wir diese Beiträge sehr schnell zum Lucene-Index hinzufügen müssen (< 0.5s), um für die Suche verfügbar zu werden. Es wird anfangs ungefähr 5E6 Posts im Repository geben. Angenommen, die Suchmaschine läuft auf einem nicht exotischen Server (ich weiß, das ist sehr vage!).

Weitere Vorschläge in Bezug auf das Problem der Suche nach häufig wechselnden Inhalt geschätzt. Die Forenbeiträge müssen nach einer variablen Anzahl von benannten Tags durchsuchbar sein (Tag-Name und Wert müssen übereinstimmen). Ein SQL-basierter Ansatz (basierend auf dem Toxi-Schema) gibt uns nicht die Leistung, die wir gerne hätten.

+0

Auch wenn die Frage bereits beantwortet wurde, sollten Sie einen Server in Betracht ziehen, der die Suche unterstützt (wenn Out-of-Process eine Option ist), etwa [Solr] (http://lucene.apache.org/ solr /) oder [elasticsearch] (http://www.elasticsearch.org/); Beide kümmern sich sehr gut um die Erstellung und Verwaltung von Indizes und kümmern sich um Dinge wie Replikation, Sharding usw., die für den Umgang mit großen/mehreren Indizes wichtig sind. – casperOne

Antwort

9

Aus Foren (http://episteme.arstechnica.com) Lucene als Such-Backend verwenden, so dass es machbar ist. Posts werden nicht ganz so schnell indexiert, wie Sie möchten, aber wir könnten das lösen, indem wir die Indizierungshardware aufstocken und eine intelligentere Caching-Strategie verwenden.

Die allgemeine Antwort auf diese Frage ist: Es hängt davon ab, was Ihr Schreib-/Update-Muster ist. Foren sind relativ einfach, da die meisten Inhalte neu sind und vorhandener Inhalt seltener aktualisiert wird.

Für ein Forum würde ich empfehlen, einen "Archiv" -Index und einen "Live" -Index zu haben. Der Live-Index kann Beiträge vom letzten Tag, Woche, Jahr enthalten, während der Archiv-Index eine große Anzahl von Beiträgen enthält, die wahrscheinlich nie wieder berührt werden. Wenn also jemand einen neuen Beitrag erstellt, wird er zunächst im Live-Index indiziert. Zu einem späteren Zeitpunkt löschte ein Batch-Job den Live-Index und importierte alles neu in das Archiv.

Lucene ist sehr gut bei der Abfrage über mehrere Indizes. Du solltest diese Fähigkeit missbrauchen. :)

4

Lucene.Net ist extrem schnell, jedoch gibt es viele Dinge, die Abfragen verlangsamen können, wenn sie falsch verwendet werden. Ich empfehle dringend, das Buch Lucene in Action von Erik Hatcher und Otis Gospodnetić zu lesen. Es enthält ein sehr gutes Kapitel über Leistungstests und Tuning.