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