我使用' elasticsearch-model'设置了弹性搜索轨道, ' elasticsearch-导轨'宝石。
我正在尝试按其内容搜索这些附件。当我有索引的PDF,Word,纯文本或许多其他格式时,它运行良好。但是当我索引mac格式时,它不起作用,例如.pages,.keynote和.numbers文件。
我确保将mac文件编入索引,但感觉它们没有正确编入索引。当我查看.word文件与.pages文件的原始索引数据时,它们都将各自的附件字段填充为文档内容的base64表示。然而,似乎对于mac扩展,这种base64表示并不准确。
我的索引模型定义:
settings index: { number_of_shards: 3 } do
mappings do
indexes :filename
indexes :uploaded_by
indexes :project_id, index: :not_analyzed
indexes :attachment, type: 'attachment'
end
end
def as_indexed_json(options={})
self.as_json({
only: [:project_id, :filename, :uploaded_by, :attachment],
methods: [:attachment]
})
end
我的附件方法:
def attachment
if url
key = url.sub("https://s3.amazonaws.com/#{ENV['BUCKETNAME']}/", "")
content = AWS.s3.buckets[ENV['BUCKETNAME']].objects[key].read
Base64.encode64(content)
end
end
首先将文件上传到s3(因为客户端直接将其发送到那里),然后由服务器从s3读取以获得索引。这只是概念代码的证明,未来dev将从客户端上传到服务器,索引,然后上传到s3,然后从服务器上删除。
E.S版本:" 1.7.1", Lucene版本:" 4.10.4"