2016-05-30 85 views
1

我试图索引文件(.doc,.ppt,.pdf等)作为附件(将内容字段存储为BASE64内容),然后执行搜索查询并突出显示结果文件上的内容字段。 当我编制索引时,为什么文件的大小增加了?文档索引大小超过原始大小

例如:从中索引文档的文件夹总大小为30mb。但头插件显示了相同数量的文件(这是从同一个文件夹索引)127MB

这里是我的映射风格:

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))))))); 

观察:(不知道如果我用正确的这个) 当我使用手动编号为文档建立索引时,大小约为36mb,但是当我删除I​​d字段和索引时,索引需要很多时间,大小更大,搜索功能无法正常工作。它依赖于文件是如何索引?)

TIA

回答

1

索引的大小取决于许多不同的因素。您的文件夹的原始大小并不能很好地估计索引的重量。

它很大程度上取决于您的字段映射,即如果您使用大量文本内容(似乎是您的情况)对索引字段进行索引,如果您有使用ngrams标记器和/或标记过滤器的自定义分析器,等等。Lucene商店many different kind of files和相同的标记(带有额外的位置和偏移量)可能在不同的文件中,所有这些都会加上索引的大小。另外,如果您在测试过程中反复重复索引您的文件夹几次,那么索引大小将会增加,因为您将有大量的已删除文档。

最后,BASE64被inflate your content所知约三分之一。

+0

如果您在测试过程中反复重复索引您的文件夹几次,索引大小将增加,因为您将有大量已删除的文档。但是,我正在删除现有文档并创建一个新索引每次。那么这个效果呢?我使用的是“英文”分析仪,除此之外没有任何内容。由于我在索引文档,所以文本内容相当高。 – ASN

+0

尝试在没有分析器的情况下为您的文档建立索引,无需存储位置和偏移量,而无需存储内容,即尽可能使用最简单的设置。你有多少?然后添加存储并进行比较。然后添加分析仪并进行比较。然后添加位置/偏移量并进行比较等等。您会看到索引的每个“附加设置”都与您的索引大小相加。这很正常。 – Val

+0

Okok。但令我感到惊讶的是,在编制索引时改变了id代。当我使用自动生成的ID对文档编制索引时,它比使用自定义ID索引文档花费的空间更多。 (可能是我可能错过了某些东西,而使用自动ID)所以想知道它是否也取决于此。所以这就是为什么这个职位。 – ASN