Ich habe Folgendes gelesen:
Und ich habe Fragen zu einigen Dingen:
-XX:+UseCompressedStrings
verwende, welche Art von Speicherersparnis kann ich erreichen? Um ein einfaches Beispiel zu behalten: Wenn ich 1 indiziertes Feld (string) und 1 gespeichertes Feld (string) mit omitNorms = true und omitTf = true habe, welche Art von Einsparungen im Index und im Dokumenten-Cache kann ich erwarten? Ich schätze ungefähr 50%, aber vielleicht ist das zu optimistisch. *:*
ausgeführt? 6-8 Nicht positiv.
Aus eigener Erfahrung mit Solr Performance Tuning sollten Sie Solr verlassen, um mit Abfragen, nicht Dokumentspeicher umzugehen. Die meisten Ihrer Fragen konzentrieren sich darauf, wie Dokumente Speicherplatz belegen. Solr ist eine Suchmaschine, kein Dokumentenspeicher. Wenn Sie möchten, dass Solr SCHNELL ist und nur wenig Speicher belegt, sollten Sie nur Indexinformationen für Suchzwecke verwenden. Die Dokumente selbst sollten gespeichert, abgerufen und an anderer Stelle gerendert werden. Vorzugsweise im System, das speziell für diesen Job optimiert ist. Das einzige Feld, das Sie in Ihrem Solr-Dokument speichern sollten, ist eine ID zum Abrufen aus dem Dokumentenspeichersystem.
Caches
Im Allgemeinen scheint Caching eine gute Idee zu sein, um die Leistung zu verbessern, aber das hat auch viele Probleme:
Darüber hinaus verbessert Caching die Suchlatenz kaum, es sei denn, es gibt Muster in Ihren Abfragen. Wenn im Gegensatz dazu 20% des Datenverkehrs auf einige wenige Abfragen zurückzuführen sind, kann der Cache für Abfrageergebnisse interessant sein. Das Konfigurieren von Caches erfordert, dass Sie Ihre Abfragen und Ihre Dokumente sehr gut kennen. Wenn Sie dies nicht tun, sollten Sie wahrscheinlich das Caching deaktivieren.
Selbst wenn Sie alle Caches deaktivieren, kann die Leistung dank des OS-I / O-Caches immer noch ziemlich gut sein. Praktisch bedeutet dies, dass wenn Sie den gleichen Teil einer Datei immer wieder lesen, ist es wahrscheinlich, dass es nur beim ersten Mal vom Datenträger und dann vom E / A-Cache gelesen wird. Wenn Sie alle Caches deaktivieren, können Sie der JVM weniger Speicher zur Verfügung stellen, sodass mehr Speicher für den E / A-Cache zur Verfügung steht. Wenn Ihr System über 12 GB Arbeitsspeicher verfügt und Sie der JVM 2 GB zur Verfügung stellen, kann der E / A-Cache möglicherweise bis zu 10 GB Ihres Indexes zwischenspeichern (abhängig von anderen Anwendungen, die ebenfalls Arbeitsspeicher benötigen).
Ich empfehle Ihnen, dies zu lesen, um weitere Informationen zu Cache auf Anwendungsebene und zu E / A-Cache zu erhalten:
Feldcache
Die Größe des Feldcaches für eine Zeichenfolge ist (ein Array von ganzen Zahlen der Länge maxDoc) + (ein Array für alle eindeutigen Zeichenfolgeninstanzen). Wenn Sie also einen Index mit einem Zeichenfolgenfeld haben, das durchschnittlich N Instanzen der Größe S hat, und wenn Ihr Index M Dokumente hat, dann ist die Größe des Feldcache für dieses Feld ungefähr M * 4 + N * S
.
Der Feldcache wird hauptsächlich für Facetten und Sortierung verwendet. Selbst sehr kurze Strings (weniger als 10 Zeichen) sind mehr als 40 Bytes , Das bedeutet, dass Sie erwarten sollten, dass Solr viel Speicher benötigt, wenn Sie ein String-Feld mit einer hohen Anzahl eindeutiger Werte sortieren oder in ein Facettenfeld einfügen.
Fuzzy-Abfrage
FuzzyQuery ist langsam in Lucene 3.x, aber viel schneller in Lucene 4.x.
Es kommt auf die von Ihnen gewählte Rechtschreibprüfung an, aber ich denke, dass die Rechtschreibprüfung von Solr 3.x N-Grams verwendet, um Kandidaten zu finden (deshalb benötigt sie einen dedizierten Index) und berechnet dann nur Abstände auf dieser Menge. Die Leistung ist also immer noch einigermaßen gut.