2016-05-30 8 views
1

Ich versuche Dokumente (.doc, .ppt, .pdf etc) als Anhang zu indexieren (Speichern des Inhaltsfelds als BASE64-Inhalt) und dann eine Suchanfrage durchführen und markieren das Inhaltsfeld der resultierenden Dateien. Wenn ich sie indexiere, warum wird die Größe der Dateien erhöht?Dokumente Indizierte Größe ist mehr als die Originalgröße

Für zB: Die Gesamtgröße des Ordners, aus dem Dokumente indiziert werden, ist 30mb. Aber die Kopf-Plugin ist für die gleiche Anzahl von Dateien zeigt 127mb (die aus dem gleichen Ordner indiziert werden)

Hier ist mein Mapping-Stil:

var response= client.CreateIndex(defaultIndex, c => c 
        .Mappings(m => m 
        .Map<Document>(mp => mp 
        .Properties(ps => ps 
         .String(s => s.Name(e => e.Title)) 
         .Attachment(s => s.Name(p => p.File) 
          .FileField(ff => ff.Name(f => f.File) 
          .TermVector(TermVectorOption.WithPositionsOffsetsPayloads) 
          .Analyzer("english") 
          .Store(true))))))); 

Beobachtung: (weiß nicht, ob ich richtig mit this) Wenn ich die Dokumente mit manueller ID indizierte, ist die Größe etwa 36 MB, aber wenn ich das Id-Feld und Index entfernen, dann dauert es so viel Zeit, um zu indizieren, die Größe ist mehr und die Suchfunktion funktioniert nicht richtig. Ist es hängt davon ab, wie die Datei indiziert?)

TIA

Antwort

1

Die Größe des Index hängt von vielen verschiedenen Faktoren ab. Die rohe Größe Ihres Ordners ist keine gute Schätzung dafür, wie viel Ihr Index wiegen wird.

Es hängt viel von der Zuordnung Ihrer Felder ab, dh wenn Sie Felder mit großem Textinhalt indizieren (scheint Ihr Fall zu sein) oder nicht, wenn Sie benutzerdefinierte Analysatoren mit Ngrams Tokenizern und/oder Token-Filtern haben, usw. Lucene speichert many different kind of files und das gleiche Token (mit zusätzlichen Positionen und Offsets) möglicherweise in verschiedenen Dateien, die alle auf die Größe Ihres Indexes.

Wenn Sie Ihren Ordner während des Tests mehrmals erneut indizieren, wird die Indexgröße größer, da Sie eine große Menge gelöschter Dokumente haben.

Schließlich ist BASE64 um inflate your content um etwa ein Drittel bekannt.

+0

_wenn Sie Ihren Ordner während des Tests mehrmals hintereinander neu indizieren, wird die Indexgröße größer, da Sie eine große Menge gelöschter Dokumente haben._ Aber ich lösche die vorhandene und erstelle einen neuen Index jedes Mal. Also tut dieser Effekt? Ich benutze auf "Englisch" -Analyse und nichts davon abgesehen. Bei der Indexierung von Dokumenten ist der Textinhalt vergleichsweise hoch. – ASN

+0

Versuchen Sie, Ihre Dokumente ohne Analyzer ohne Positionen und Offsets zu indizieren, ohne den Inhalt zu speichern, d. H. Mit den einfachsten Einstellungen wie möglich. Wie viel bekommst du? Dann fügen Sie Speicher hinzu und vergleichen Sie. Dann füge den Analysator hinzu und vergleiche. Fügen Sie dann die Positionen/Offsets hinzu und vergleichen Sie usw. Sie werden sehen, dass jede "zusätzliche Einstellung" Ihres Indexes zu Ihrer Indexgröße addiert. Es ist völlig normal. – Val

+0

Okok. Aber was mich überrascht hat, ist die Tatsache, dass die Änderung der ID-Generation beim Indexieren. Wenn ich die Dokumente mithilfe von automatisch generierten IDs indizierte, benötigte ich mehr Platz als die Dokumente, die mit benutzerdefinierten IDs indizierten. (Vielleicht habe ich etwas verpasst, während ich Auto-IDs benutze) Also wollte ich wissen, ob es auch darauf ankommt. Also warum ist der Beitrag? – ASN

Verwandte Themen