使用PHPRIAK客户端,如何同时搜索两个索引中的值?

使用PHPRIAK客户端,如何同时搜索两个索引中的值?,php,riak,Php,Riak,我在中有一个数据集,其中包含不同的索引项(使用index\u bin)。如果其中两个索引在单个请求中具有特定值,我将如何搜索对象?示例:性别,姓氏,性别=男性,姓氏=史密斯 我会使用Map/Reduce吗?如果是这样,任何示例代码?Riak中二级索引的限制是一次只能搜索一个索引。因此,您将无法直接组合索引 由于索引数据存储在记录的元数据中,您可以创建一个mapreduce作业,该作业将一个2i查询作为输入,并具有一个映射阶段,该阶段根据元数据对另一个进行过滤。但是,以这种方式使用mapreduc

我在中有一个数据集,其中包含不同的索引项(使用
index\u bin
)。如果其中两个索引在单个请求中具有特定值,我将如何搜索对象?示例:性别,姓氏,性别=男性,姓氏=史密斯


我会使用Map/Reduce吗?如果是这样,任何示例代码?

Riak中二级索引的限制是一次只能搜索一个索引。因此,您将无法直接组合索引

由于索引数据存储在记录的元数据中,您可以创建一个mapreduce作业,该作业将一个2i查询作为输入,并具有一个映射阶段,该阶段根据元数据对另一个进行过滤。但是,以这种方式使用mapreduce可能会非常缓慢和低效,因为传递到map phase函数的所有数据都需要从磁盘读取

如果您希望为一个合理常见且可预测的请求提供服务,那么您可以创建并使用复合索引。例如,您可以创建一个名为
gender\u name\u bin
的索引,该索引的值可能类似于
male\u Smith
。这将允许您对索引的最后一部分执行范围查询,只要第一部分是固定的,这就提供了一些灵活性


在最新版本中,还可以基于正则表达式过滤二级索引值,这不需要加载实际对象。有关这方面的更多信息,请参见。

您为实现这一目标做了哪些工作,或者您希望社区成员免费为您完成这项工作?嗨,Jack,我已经阅读了API文档,除了在两段独立的代码中循环索引外,我似乎找不到一种使用Basho的PHP客户机库的方法。我希望有一种更有效的方式。我不希望有人免费为我做这项工作,只是希望有人能在过去找到如何做这项工作的方法。谢谢克里斯蒂安,这证实了我的想法。我希望在未来的Riak版本中,可以查询多个索引。我想另一种选择是使用SOLR和全文搜索,这应该比运行Map/Reduce作业更快。我希望Riak 2.0中集成了Riak和SOLR的Riak搜索的新版本,能够在需要灵活性和查询多个字段的能力时,取代大量的二级索引使用。