我正在使用riak(和riak搜索)来存储和索引文本文件。对于每个文件,我创建一个riak对象(文件的文本内容是对象值)并将其保存到riak存储桶中。该存储桶配置为使用默认搜索分析器。
我想存储(并能够搜索)这些文件的一些元数据。提交日期,大小等。
所以我已经向IRC提出过要求,并且也考虑了很多。 这里有一些解决方案,虽然它们不如我想的那样好:
我可以有第二个“元数据”对象来存储有问题的数据(可能在另一个存储桶中),将其编入索引等。但这不是一个非常好的解决方案,特别是如果我想能够做到的话组合搜索,如值:someword和date:somedate
我可以把文件的内容放在JSON对象里面,如:{“date”:somedate,“value”:“some big blob of text”}。这可能会起作用,但它会给搜索索引器带来太多负担,因为它必须首先反序列化一个大的json对象(并且这些文件有时非常大)。
我可以编写一个自定义分析器/索引器来读取我的文件对象并生成/索引有问题的元数据。这里唯一真正的问题是我很难找到如何做到这一点的文档。它可能会成为一个可操作的PITA,因为我需要将一些erlang代码推送到每个riak节点(记得在我更新集群时,当我添加新节点等时这样做)我可能是错的如果是这样,请纠正我。
因此,对我来说最好的解决方案是,如果我可以改变riak搜索索引文档,并在生成后添加一些任意搜索字段。这是可能的,这是明智的,并且在图书馆等中有这种支持吗?我当然可以“手动”修改有问题的文档,因为带有索引文档的存储桶会自动创建,但正如我所说,我只是不知道做什么是正确的。