2016-06-28 9 views
0

Ich verwende Solr, um die Suche nach einer großen Menge von Dokumenten zu behandeln, ich habe Probleme mit der Leistung mit komplexen Abfragen mit Facetten und Filter. Diese ist eine solr Abfrage verwendet, um einige Daten zu erhalten:Solr Leistungsprobleme

solr volle Anfrage: http://host/solr/discovery/select?q=& fq = domain% 3Acom + OR + host% 3Acom + OR + public_suffix% 3Acom & fq = crawl_date% 3A% 5B2000-01 -01T00% 3A00% 3A00Z + TO + 2000-12-31T23% 3A59% 3A59Z% 5D & FQ =% 7B% 21Tag% 3DCrawl_Jahr% 7DCrawl_Jahr% 3A% 282000% 29 & FQ =% 7B% 21Tag 3DPublic_Suffix% 7Dpublic_Suffix% 3A % 28com% 29 & start = 0 & rows = 10 & sort = Partitur + ab & fl =% 2Cscore & hl = true & hl.fragsize = 200 & hl.simple.pre =% 3Cstro ng% 3E & hl.simple.post =% 3C% 2Fstrong% 3E & hl.snippets = 10 & hl.fl = Gehalt & hl.mergeContiguous = false & hl.maxAnalyzedChars = 100000 & hl.usePhraseHighlighter = true & Facette = true & facet.mincount = 1 & facet.limit = 11 & facet.field =% 7B% 21ex% 3Dcrawl_year% 7Dcrawl_year & facet.field =% 7B% 21ex% 3Ddomain% 7Ddomain & facet.field =% 7B% 21ex% 3Dpublic_suffix% 7Dpublic_suffix & facet.field =% 7B% 21ex% 3Dcontent_language% 7Dcontent_language & facet.field =% 7B% 21ex% 3Dcontent_type_norm% 7Dcontent_type_norm & shards = shard1"

012.351.

Wenn diese Abfrage lokal mit etwa 50000 Dokumenten verwendet wird, dauert es etwa 10 Sekunden, aber wenn ich es auf dem Host mit 200 Millionen Dokumenten versuche, dauert es etwa 4 Minuten. Ich weiß natürlich, dass es viel länger dauern wird, aber ich frage mich, ob jemand das gleiche Problem hatte und schnellere Ergebnisse erzielen konnte. Ich weiß, dass ich zwei Shards benutze.

Warten auf Ihre Antworten.

+0

Welche Version von Solr? Sie sollten sich wahrscheinlich [Solr spark facetting] (https://tokee.github.io/lucene-solr/) ansehen, das für etwas erstellt wurde, das Ihrer Suchanfrage sehr ähnlich ist. – MatsLindh

Antwort

0

Sie machen eine Reihe von komplizierten Dingen gleichzeitig: Datumsbereiche, Hervorhebung, Facettierung und verteilte Suche. (Nicht-solrcloud, sieht aus wie)

Dennoch scheinen 10 Sekunden für einen 50k-Doc-Index wirklich langsam zu mir. Versuchen Sie selektiv entfernen Aspekte Ihrer Suche, um zu sehen, wenn Sie isolieren können, welcher Teil Dinge verlangsamt und dann darauf konzentrieren. Ich würde erwarten, dass Sie einfachere Abfragen finden, die schnell sind, selbst wenn sie mit vielen Dokumenten übereinstimmen.

So oder so Besuche https://wiki.apache.org/solr/SolrPerformanceProblems#RAM

viele nützliche Tipps Es gibt da, aber die # 1 Performance-Problem ist in der Regel nicht genug Speicher, vor allem für große Indizes.

0

prüfen, wie viele Segmente, die Sie haben auf solr als mehr die Anzahl der Segmente schlechter ist die Abfrage-Antwort Wenn Sie nicht merge Faktor in Ihrer solrConfig.xml gesetzt haben dann wahrscheinlich sind Sie in 40 Segmente haben, die schlecht für Abfrageantwortzeit Stellen sie Ihren merge Faktor entsprechend Wenn keine neuen Dokumente festgelegt werden hinzugefügt sind es 2

MergeFactor die MergeFactor etwa die Anzahl der Segmente bestimmt. Der mergeFactor-Wert teilt Lucene mit, wie viele Segmente gleicher Größe erstellt werden sollen, bevor sie in ein einzelnes Segment zusammengeführt werden. Es kann als Basis eines Zahlensystems betrachtet werden. Wenn Sie zum Beispiel mergeFactor auf 10 setzen, wird auf dem Datenträger ein neues Segment für jeweils 1000 (oder maxBufferedDocs) Dokumente erstellt, die dem Index hinzugefügt werden. Wenn das 10. Segment der Größe 1000 hinzugefügt wird, werden alle 10 zu einem einzelnen Segment der Größe 10.000 zusammengeführt. Wenn 10 solcher Segmente mit einer Größe von 10.000 hinzugefügt wurden, werden sie zu einem einzelnen Segment zusammengefügt, das 100.000 Dokumente enthält, und so weiter. Daher gibt es zu jeder Zeit nicht mehr als 9 Segmente in jeder Indexgröße. Diese Werte werden in der mainIndex Abschnitt solrconfig.xml (die indexDefaults Abschnitt außer Acht lassen): MergeFactor Tradeoffs Höherwertiges merge Faktor (zB 25): Pro: Im Allgemeinen Indexierungsgeschwindigkeit Con verbessert: Weniger häufige Verschmelzungen, Dies führt zu einer Sammlung mit mehr Indexdateien, die die Suche verlangsamen können. Niedriger Wert Merge-Faktor (z. B. 2): Pro: Kleinere Anzahl von Indexdateien, wodurch die Suche beschleunigt wird. Con: Mehr Segment verschmilzt langsamer Indizierung.